UNPKG

gpii-windows

Version:

Components of the GPII personalization infrastructure for use on Microsoft's "Windows" ™

471 lines (437 loc) 15.4 kB
/* * 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 */ "use strict"; 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)); });