gpii-universal
Version:
Cross platform, core components of the GPII personalization infrastructure.
348 lines (325 loc) • 12.2 kB
JavaScript
/*
* 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);
});
});
})();