UNPKG

gpii-universal

Version:

Cross platform, core components of the GPII personalization infrastructure.

283 lines (267 loc) 9.59 kB
/* * Settings Handler Utilities Tests * * Copyright 2012 Raising the Floor - International * Copyright 2013 OCAD University * * Licensed under the New BSD license. You may not use this file except in * compliance with this License. * * The research leading to these results has received funding from the European Union's * Seventh Framework Programme (FP7/2007-2013) * under grant agreement no. 289016. * * You may obtain a copy of the License at * https://github.com/GPII/universal/blob/master/LICENSE.txt */ /* global fluid, jqUnit, gpii */ "use strict"; (function () { // TODO: Rewrite all these tests into browser-style jqUnit tests, leaving just // a stub tester here to test filesystem integration fluid.registerNamespace("gpii.tests"); fluid.registerNamespace("gpii.tests.settingsHandlersUtilitiesTests"); gpii.tests.settingsHandlersUtilitiesTests.filterSupportedSettingsSpecs = { "If supportedSettings is undefined, return settings": { settings: { "weirdSetting": "foo" }, supportedSettings: undefined, expected: { "weirdSetting": "foo" } }, "If settings is undefined, return undefined": { settings: undefined, supportedSettings: { "weirdSetting": {} }, expected: undefined }, "Filter by supportedSettings": { settings: { "weirdSetting": "foo", "otherSetting": "bar" }, supportedSettings: { "weirdSetting": {} }, expected: { "weirdSetting": "foo" } }, "If supportedSettings directive is present - test no matching": { settings: { "weirdSetting": "foo", "otherSetting": "bar" }, supportedSettings: { "thirdSetting": {} }, expected: {} }, "Works with `undefined` values for settings (required when restoring)": { settings: { "weirdSetting": undefined, "otherSetting": undefined }, supportedSettings: { "weirdSetting": {} }, expected: { "weirdSetting": undefined } } }; jqUnit.test("filterSupportedSettings tests", function () { fluid.each(gpii.tests.settingsHandlersUtilitiesTests, function (test, name) { var result = gpii.settingsHandlers.filterSupportedSettings(test.settings, test.supportedSettings); jqUnit.assertDeepEq(name, test.expected, result); }); }); jqUnit.test("settingsHandlers.setSettings", function () { // check simple json structure var result = gpii.settingsHandlers.setSettings( {settings: { "key": "val1" }}, { "key": "val2"}); jqUnit.assertDeepEq("Simple setting", { key: { oldValue: "val2", newValue: "val1" } }, result.settings); // complex json structure var json = { firstentry: { lvl2: { key1: "vala", key2: "valb" } }, nextentry: { key3: "valc" } }; var settings = { "firstentry.lvl2.key1": "newValue", "nextentry.key3": "otherNewValue" }; var exp = { "firstentry.lvl2.key1": { oldValue: "vala", newValue: "newValue" }, "nextentry.key3": { oldValue: "valc", newValue: "otherNewValue" } }; result = gpii.settingsHandlers.setSettings({settings: settings}, json); jqUnit.assertDeepEq("Multiple and nested settings", exp, result.settings); // check setSettings for unset values json = { somekey: { somekey2: { key1: "vala" } } }; settings = { "newkey1.newkey2": "someval" }; exp = { "newkey1.newkey2": { oldValue: undefined, newValue: "someval" }}; result = gpii.settingsHandlers.setSettings({settings: settings}, json); jqUnit.assertDeepEq("Non existing settings (multilevel)", exp, result.settings); }); jqUnit.test("numberify tests", function () { jqUnit.assertEquals("Single number", 3, gpii.settingsHandlers.numberify("3")); jqUnit.assertDeepEq("Array of numbers", [1, "3a", 59.5], gpii.settingsHandlers.numberify(["1", "3a", "59.5"])); jqUnit.assertDeepEq("Structure of numbers", {a: 3.9998, b: [false, 55]}, gpii.settingsHandlers.numberify({a: "3.9998", b: [false, "55"]})); }); gpii.tests.settingsHandlersUtilitiesTests.copySettingsDefs = [{ name: "Copy with extra setting in source", source: { "myconf": { "settings": { "cross-hairs-clip": true, "mysetting": "some value" }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } }, target: { "myconf": { "settings": { "cross-hairs-clip": false }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } }, expected: { "myconf": { "settings": { "cross-hairs-clip": true, "mysetting": "some value" }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } } }, { name: "Copy with extra setting in target", source: { "myconf": { "settings": { "cross-hairs-clip": true }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } }, target: { "myconf": { "settings": { "cross-hairs-clip": false, "mysetting": "some value" }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } }, expected: { "myconf": { "settings": { "cross-hairs-clip": true, "mysetting": "some value" }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } } }, { name: "Copy with 'undefined' value in source and target", source: { "myconf": { "settings": { "cross-hairs-clip": true, "undefSetting": undefined }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } }, target: { "myconf": { "settings": { "cross-hairs-clip": false, "undefSetting2": undefined, "undefSetting": "some value" }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } }, expected: { "myconf": { "settings": { "cross-hairs-clip": true, "undefSetting": undefined, "undefSetting2": undefined }, "type": "gpii.tests.lifecycleManager.mockSettingsHandler", "options": {} } } }]; jqUnit.test("Testing gpii.settingsHandlers.copySettings function", function () { fluid.each(gpii.tests.settingsHandlersUtilitiesTests.copySettingsDefs, function (testDef) { gpii.settingsHandlers.copySettings(testDef.target, testDef.source); jqUnit.assertDeepEq(testDef.name, testDef.expected, testDef.target); }); }); gpii.tests.settingsHandlersUtilitiesTests.changesToSettingsDefs = [{ name: "Element with type \"DELETE\" returns undefined value", source: { type: "DELETE", value: true }, expected: undefined }, { name: "\"path\" within the element is maintained", source: { "value": false, "path": "pvParam.dwFlags.HCF_HIGHCONTRASTON", "discard": true }, expected: { "value": false, "path": "pvParam.dwFlags.HCF_HIGHCONTRASTON" } }, { name: "Only element value is returned in other cases", source: { "value": 1, "discard": true }, expected: 1 }]; jqUnit.test("Testing gpii.settingsHandlers.changesToSettings function", function () { fluid.each(gpii.tests.settingsHandlersUtilitiesTests.changesToSettingsDefs, function (testDef) { var assertFunc = fluid.isPlainObject(testDef.expected) ? "assertDeepEq" : testDef.expected === undefined ? "assertUndefined" : "assertEquals"; var result = gpii.settingsHandlers.changesToSettings(testDef.source); jqUnit[assertFunc](testDef.name, testDef.expected, result); }); }); })();