UNPKG

gpii-universal

Version:

Cross platform, core components of the GPII personalization infrastructure.

348 lines (325 loc) 12.2 kB
/* * Launch Handler Tests * * Copyright 2017 Raising the Floor - International * * Licensed under the New BSD license. You may not use this file except in * compliance with this License. * * 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.flexibleHandler"); fluid.defaults("gpii.tests.flexibleHandler.assertDirective", { gradeNames: "fluid.function", argumentMap: {} }); gpii.tests.flexibleHandler.assertDirective = function () { jqUnit.assertTrue("Assertion block", true); }; fluid.defaults("gpii.tests.flexibleHandler.failBlock", { gradeNames: "fluid.function", argumentMap: {} }); gpii.tests.flexibleHandler.failBlock = function () { jqUnit.assertTrue("Asserted that this block should not be called", false); }; fluid.defaults("gpii.tests.flexibleHandler.returnTrue", { gradeNames: "fluid.function", argumentMap: {} }); gpii.tests.flexibleHandler.returnTrue = function () { return true; }; fluid.defaults("gpii.tests.flexibleHandler.returnFalse", { gradeNames: "fluid.function", argumentMap: {} }); gpii.tests.flexibleHandler.returnFalse = function () { return false; }; gpii.tests.flexibleHandler.assertBlock = { "type": "gpii.tests.flexibleHandler.assertDirective" }; gpii.tests.flexibleHandler.reportRunning = { "type": "gpii.tests.flexibleHandler.returnTrue" }; gpii.tests.flexibleHandler.reportNotRunning = { "type": "gpii.tests.flexibleHandler.returnFalse" }; gpii.tests.flexibleHandler.basicTestDefs = [ { description: "Passing true to handler if already running should not execute start block", expect: 1, input: { settings: { "running": true }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportRunning } }, expectedSettings: { "running": { "newValue": true, "oldValue": true } } }, { description: "Passing false to handler if already not running should not execute stop block", expect: 1, input: { settings: { "running": false }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } }, expectedSettings: { "running": { "newValue": false, "oldValue": false } } }, { description: "Passing true to handler if solution is not running should execute start block", expect: 2, input: { settings: { "running": true }, options: { "setTrue": gpii.tests.flexibleHandler.assertBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } }, expectedSettings: { "running": { "newValue": true, "oldValue": false } } }, { description: "Passing false to handler if solution is running should execute stop block", expect: 2, input: { settings: { "running": false }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.assertBlock, "getState": gpii.tests.flexibleHandler.reportRunning } }, expectedSettings: { "running": { "newValue": false, "oldValue": true } } }, { description: "Testing for multiple start blocks", expect: 3, input: { settings: { "running": true }, options: { "setTrue": [ gpii.tests.flexibleHandler.assertBlock, gpii.tests.flexibleHandler.assertBlock ], "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } }, expectedSettings: { "running": { "newValue": true, "oldValue": false } } }, { description: "Testing for multiple stop blocks", expect: 3, input: { settings: { "running": false }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": [ gpii.tests.flexibleHandler.assertBlock, gpii.tests.flexibleHandler.assertBlock ], "getState": gpii.tests.flexibleHandler.reportRunning } }, expectedSettings: { "running": { "newValue": false, "oldValue": true } } } ]; fluid.each(gpii.tests.flexibleHandler.basicTestDefs, function (spec) { jqUnit.test(spec.description, function () { jqUnit.expect(spec.expect); var actual = gpii.launchHandlers.flexibleHandler.set({ "my.solution1": [ spec.input ] }); // build expected return payload: jqUnit.assertDeepEq("Return payload is correct", spec.expectedSettings, actual["my.solution1"][0].settings); }); }); gpii.tests.flexibleHandler.extraTestDefs = [ { description: "Multiple solution entries sent - both should attempt to start", expect: 3, input: { "my.solution1": [ { settings: { "running": true }, options: { "setTrue": gpii.tests.flexibleHandler.assertBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } } ], "my.solution2": [ { settings: { "running": true }, options: { "setTrue": gpii.tests.flexibleHandler.assertBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } } ] }, expected: { "my.solution1": [ { settings: { running: { "newValue": true, "oldValue": false } }, options: { "setTrue": gpii.tests.flexibleHandler.assertBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } } ], "my.solution2": [ { settings: { running: { "newValue": true, "oldValue": false } }, options: { "setTrue": gpii.tests.flexibleHandler.assertBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } } ] } }, { description: "Multiple solution entries sent - different actions", expect: 2, input: { "my.solution1": [ { settings: { "running": false }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.assertBlock, "getState": gpii.tests.flexibleHandler.reportRunning } } ], "my.solution2": [ { settings: { "running": false }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } } ] }, expected: { "my.solution1": [ { settings: { running: { "newValue": false, "oldValue": true } }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.assertBlock, "getState": gpii.tests.flexibleHandler.reportRunning } } ], "my.solution2": [ { settings: { running: { "newValue": false, "oldValue": false } }, options: { "setTrue": gpii.tests.flexibleHandler.failBlock, "setFalse": gpii.tests.flexibleHandler.failBlock, "getState": gpii.tests.flexibleHandler.reportNotRunning } } ] } } ]; fluid.each(gpii.tests.flexibleHandler.extraTestDefs, function (spec) { jqUnit.test(spec.description, function () { jqUnit.expect(spec.expect); var actual = gpii.launchHandlers.flexibleHandler.set(spec.input); // build expected return payload: jqUnit.assertDeepEq("Return payload is correct", spec.expected, actual); }); }); })();