gpii-windows
Version:
Components of the GPII personalization infrastructure for use on Microsoft's "Windows" ™
471 lines (437 loc) • 15.4 kB
JavaScript
/*
* Tests for the nativeSettingsHandler
*
* Copyright 2018 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
*/
;
var fluid = require("gpii-universal");
var jqUnit = fluid.require("node-jqunit");
var gpii = fluid.registerNamespace("gpii");
require("../src/nativeSettingsHandler");
fluid.registerNamespace("gpii.tests.windows.nativeSettingsHandler");
var teardowns = [];
jqUnit.module("gpii.tests.windows.nativeSettingsHandler", {
setup: function () {
},
teardown: function () {
while (teardowns.length) {
teardowns.pop()();
}
}
});
gpii.tests.windows.nativeSettingsHandler.apiTest = {
init: [
{
"settings": {
"DoubleClickTimeConfig": {
"value": 500
}
},
"options": {
"functionName": "DoubleClickTime"
}
},
{
"settings": {
"SolidColor": {
"value": {"r": 0, "g": 0, "b": 0}
}
},
"options": {
"functionName": "SolidColor"
}
}
],
set: {
payload: [
{
"com.microsoft.windows.mouseSettings": [{
"settings": {
"DoubleClickTimeConfig": {
"value": 600
}
},
"options": {
"functionName": "DoubleClickTime"
}
}]
},
{
"com.microsoft.windows.desktopBackgroundColor": [{
"settings": {
"SolidColorConfig": {
"value": {"r": 67, "g": 187, "b": 19}
}
},
"options": {
"functionName": "SolidColor"
}
}]
}
],
expectedResult: [
{
"com.microsoft.windows.mouseSettings": [{
"settings": {
"DoubleClickTimeConfig": {
"oldValue": {
"value": 500
},
"newValue": {
"value": 600
}
}
}
}]
},
{
"com.microsoft.windows.desktopBackgroundColor": [{
"settings": {
"SolidColorConfig": {
"oldValue": {
"value": {"r": 0, "g": 0, "b": 0}
},
"newValue": {
"value": {"r": 67, "g": 187, "b": 19}
}
}
}
}]
}
]
},
get: {
payload: [
{
"com.microsoft.windows.mouseSettings": [{
"settings": {
"DoubleClickTimeConfig": {}
},
"options": {
"functionName": "DoubleClickTime"
}
}]
},
{
"com.microsoft.windows.desktopBackgroundColor": [{
"settings": {
"SolidColorConfig": {}
},
"options": {
"functionName": "SolidColor"
}
}]
}
],
expectedResult: [
{
"com.microsoft.windows.mouseSettings": [{
"settings": {
"DoubleClickTimeConfig": {
"value": 500
}
}
}]
},
{
"com.microsoft.windows.desktopBackgroundColor": [{
"settings": {
"SolidColorConfig": {
"value": {"r": 0, "g": 0, "b": 0}
}
}
}]
}
]
}
};
jqUnit.test("Testing nativeSettingsHandler API (get and set functions)", function () {
fluid.each(gpii.tests.windows.nativeSettingsHandler.apiTest.init, function (payload) {
// Set to initial values:
gpii.windows.nativeSettingsHandler.setImpl(payload);
});
var pArrGetResults = [];
fluid.each(gpii.tests.windows.nativeSettingsHandler.apiTest.get.payload, function (payload) {
// First we test the get functionality
fluid.log(payload);
pArrGetResults.push(gpii.windows.nativeSettingsHandler.get(payload));
});
var pGetResults = fluid.promise.sequence(pArrGetResults);
pGetResults.then(
function (getResults) {
fluid.each(getResults, function (getResult, getIndex) {
// Check results
var expectedResult = gpii.tests.windows.nativeSettingsHandler.apiTest.get.expectedResult[getIndex];
jqUnit.assertDeepEq("Checking return payload of get", expectedResult, getResult);
});
var pArrSetResults = [];
fluid.each(gpii.tests.windows.nativeSettingsHandler.apiTest.set.payload, function (payload) {
// Test set functionality
pArrSetResults.push(gpii.windows.nativeSettingsHandler.set(payload));
});
var pSetResults = fluid.promise.sequence(pArrSetResults);
pSetResults.then(
function (setResults) {
fluid.each(setResults, function (setResult, setIndex) {
// Check results
var expectedResult = gpii.tests.windows.nativeSettingsHandler.apiTest.set.expectedResult[setIndex];
jqUnit.assertDeepEq("Checking return payload of set", expectedResult, setResult);
});
},
function (err) {
jqUnit.fail("Setting the new values failed with error:" + err);
}
);
},
function (err) {
jqUnit.fail("Getting the old values failed with error:" + err);
}
);
// Recover original system values
fluid.each(gpii.tests.windows.nativeSettingsHandler.apiTest.init, function (payload) {
gpii.windows.nativeSettingsHandler.set(payload);
});
});
gpii.tests.windows.nativeSettingsHandler.failingAPITest = {
init: [
{
"settings": {
"ScreenMirrorConfig": {
"value": false
}
},
"options": {
"functionName": "ScreenMirror"
}
}
],
set: {
payload: [
{
"com.microsoft.windows.mirrorScreen": [{
"settings": {
"ScreenMirrorConfig": {
"value": false
}
},
"options": {
"functionName": "ScreenMirror"
}
}]
}
],
expectedResult: [
{
"com.microsoft.windows.mirrorScreen": [{
"settings": {
"ScreenMirrorConfig": {
"oldValue": {
"value": false
},
"newValue": {
"value": false
}
}
}
}]
}
]
},
get: {
payload: [
{
"com.microsoft.windows.mirrorScreen": [{
"settings": {
"ScreenMirrorConfig": {}
},
"options": {
"functionName": "ScreenMirror"
}
}]
}
],
expectedResult: [
{
"com.microsoft.windows.mirrorScreen": [{
"settings": {
"ScreenMirrorConfig": {
"value": false
}
}
}]
}
]
},
setFail: {
payload: [
{
"com.microsoft.windows.mirrorScreen": [{
"settings": {
"ScreenMirrorConfig": {
"value": true
}
},
"options": {
"functionName": "ScreenMirror"
}
}]
}
],
expectedError: [
{
"value": "{\"code\":31,\"msg\":\"A device attached to the system is not functioning.\\r\\n\"}"
}
]
}
};
jqUnit.test("Testing known failing API due to VM or environment limitations", function () {
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.init, function (payload) {
// Set to initial values:
gpii.windows.nativeSettingsHandler.setImpl(payload);
});
var pArrGetResults = [];
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.get.payload, function (payload) {
// First we test the get functionality
fluid.log(payload);
pArrGetResults.push(gpii.windows.nativeSettingsHandler.get(payload));
});
var pGetResults = fluid.promise.sequence(pArrGetResults);
pGetResults.then(
function (getResults) {
fluid.each(getResults, function (getResult) {
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.get.expectedResult, function (expResult) {
// Check results
jqUnit.assertDeepEq("Checking return payload of get", expResult, getResult);
});
});
var pArrSetResults = [];
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.set.payload, function (payload) {
// Test set functionality
pArrSetResults.push(gpii.windows.nativeSettingsHandler.set(payload));
});
var pSetResults = fluid.promise.sequence(pArrSetResults);
pSetResults.then(
function (setResults) {
fluid.each(setResults, function (setResult) {
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.set.expectedResult, function (expResult) {
// Check results
jqUnit.assertDeepEq("Checking return payload of set", setResult, expResult);
});
});
},
function (err) {
jqUnit.fail("Setting the new values failed with error:" + err);
}
);
},
function (err) {
jqUnit.fail("Getting the old values failed with error:" + err);
}
);
// Recover original system values
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.init, function (payload) {
gpii.windows.nativeSettingsHandler.set(payload);
});
var pArrSetResults = [];
fluid.each(gpii.tests.windows.nativeSettingsHandler.failingAPITest.setFail.payload, function (payload) {
// Try to set failing values
pArrSetResults.push(gpii.windows.nativeSettingsHandler.set(payload));
});
var reflect = function (promise) {
var result = fluid.promise();
promise.then(
function (v) { result.resolve({ value: v, status: "resolved" }); },
function (e) { result.resolve({ error: e, status: "rejected" }); }
);
return result;
};
var pRefRejections = fluid.promise.sequence(pArrSetResults.map(reflect));
pRefRejections.then(
function (values) {
fluid.each(values, function (val, valInd) {
var expectedResult = gpii.tests.windows.nativeSettingsHandler.failingAPITest.setFail.expectedError[valInd].value;
jqUnit.assertTrue("Checking return payload of set", val.error.includes(expectedResult));
});
}
);
});
gpii.tests.windows.nativeSettingsHandler.volumeApiTest = {
init: {
"settings": {
"Volume": {
"value": 0.5
}
},
"options": {
"functionName": "Volume"
}
},
set: {
payload: {
"com.microsoft.windows.volume": [{
"settings": {
"Volume": {
"value": 0.7
}
},
"options": {
"functionName": "Volume"
}
}]
},
expectedResult: {
"com.microsoft.windows.volume": [{
"settings": {
"Volume": {
"oldValue": {
"value": 0.5
},
"newValue": {
"value": 0.7
}
}
}
}]
}
},
get: {
payload: {
"com.microsoft.windows.volume": [{
"settings": {
"Volume": {}
},
"options": {
"functionName": "Volume"
}
}]
},
expectedResult: {
"com.microsoft.windows.volume": [{
"settings": {
"Volume": {
"value": 0.5
}
}
}]
}
}
};
jqUnit.test("Testing nativeSettingsHandler volume API (get and set functions)", function () {
jqUnit.expect(2);
// Set to initial values:
gpii.windows.nativeSettingsHandler.setImpl(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.init);
// First we test the get functionality
var result = gpii.windows.nativeSettingsHandler.get(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.get.payload);
// Check results
jqUnit.assertDeepEq("Checking return payload of get", gpii.tests.windows.nativeSettingsHandler.volumeApiTest.get.expectedResult, gpii.resolveSync(result));
// Test set functionality
var result2 = gpii.windows.nativeSettingsHandler.set(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.set.payload);
// Check results
jqUnit.assertDeepEq("Checking return payload of set", gpii.tests.windows.nativeSettingsHandler.volumeApiTest.set.expectedResult, gpii.resolveSync(result2));
});