UNPKG

gpii-universal

Version:

Cross platform, core components of the GPII personalization infrastructure.

255 lines (237 loc) 8.26 kB
/* * INI Settings Handler Tests * * Copyright 2012 Raising the Floor - International * * 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 */ "use strict"; var fluid = require("infusion"), gpii = fluid.registerNamespace("gpii"), jqUnit = fluid.registerNamespace("jqUnit"), fs = require("fs"); fluid.registerNamespace("gpii.tests"); fluid.require("%gpii-universal"); gpii.loadTestingSupport(); require("settingsHandlers"); var testTempFilePaths = [ __dirname + "/data/INISettingsHandler/test1_tmp.ini", __dirname + "/data/INISettingsHandler/test2_tmp.ini" ]; var deleteTestFiles = function () { fluid.each(testTempFilePaths, function (filePath) { if (fs.existsSync(filePath)) { fs.unlinkSync(filePath); } }); }; var tests = { basicTest: { defaultFile: __dirname + "/data/INISettingsHandler/test1_default.ini", tmpFile: testTempFilePaths[0], expectedFile: __dirname + "/data/INISettingsHandler/test1_expectedOutput.ini", set: { payload: { "nvda.screenReader": [{ options: { "filename": testTempFilePaths[0] }, settings: { "general.askToExit": false, "general.showWelcomeDialogAtStartup": false, "speech.symbolLevel": 90 } }] }, expectedResult: { "nvda.screenReader": [{ options: { "filename": testTempFilePaths[0] }, settings: { "general.askToExit": { newValue: false, oldValue: "True" }, "general.showWelcomeDialogAtStartup": { newValue: false, oldValue: "True" }, "speech.symbolLevel": { newValue: 90, oldValue: 100 } } }] } }, get: { payload: { "nvda.screenReader": [{ options: { "filename": __dirname + "/data/INISettingsHandler/test1_default.ini" }, settings: { "general.askToExit": null, "general.showWelcomeDialogAtStartup": null, "speech.symbolLevel": null } }] }, expectedResult: { "nvda.screenReader": [{ settings: { "general.askToExit": "True", "general.showWelcomeDialogAtStartup": "True", "speech.symbolLevel": 100 } }] } } }, complexTest: { defaultFile: __dirname + "/data/INISettingsHandler/test2_default.ini", tmpFile: testTempFilePaths[1], expectedFile: __dirname + "/data/INISettingsHandler/test2_expectedOutput.ini", set: { payload: { "nvda.screenReader": [{ options: { "filename": testTempFilePaths[1] }, settings: { "speech.symbolLevel": 90, "speech.espeak.rate": 40, "speech.espeak.pitch": 30, "speech.espeak2.newEntry": 30 } }] }, expectedResult: { "nvda.screenReader": [{ options: { "filename": testTempFilePaths[1] }, settings: { "speech.symbolLevel": { newValue: 90, oldValue: 100 }, "speech.espeak.rate": { newValue: 40, oldValue: 30 }, "speech.espeak.pitch": { newValue: 30, oldValue: 40 }, "speech.espeak2.newEntry": { newValue: 30, oldValue: undefined } } }] } }, get: { payload: { "nvda.screenReader": [{ options: { "filename": __dirname + "/data/INISettingsHandler/test2_default.ini" }, settings: { "speech.symbolLevel": null, "speech.espeak.rate": null, "speech.espeak.pitch": null, "speech.espeak2.newEntry": null } }] }, expectedResult: { "nvda.screenReader": [{ settings: { "speech.symbolLevel": 100, "speech.espeak.rate": 30, "speech.espeak.pitch": 40, "speech.espeak2.newEntry": undefined } }] } } } }; // avoid issue with windows using \r\n and unix using \n var unixLinebreak = function (str) { return str.replace(/\r\n/g, "\n"); }; var setTester = function (name, test) { // read original INI and copy to a file we can mess up: var origINI = fs.readFileSync(test.defaultFile, "utf-8"); fs.writeFileSync(test.tmpFile, origINI, "utf-8"); // test return payload var returnPayload = gpii.settingsHandlers.INISettingsHandler.set( test.set.payload); jqUnit.assertDeepEq("Checking return payload for " + name + " INI file: ", test.set.expectedResult, returnPayload); // next check that the written INI file is as expected: var savedINI = fs.readFileSync(test.tmpFile, "utf-8"); savedINI = unixLinebreak(savedINI); var expectedINI = fs.readFileSync(test.expectedFile, "utf-8"); expectedINI = unixLinebreak(expectedINI); jqUnit.assertEquals("checking INI file for " + name + ": ", expectedINI, savedINI); }; var getTester = function (name, test) { var returnPayload = gpii.settingsHandlers.INISettingsHandler.get( test.get.payload); jqUnit.assertDeepEq("Checking return payload for " + name + " INI file: ", test.get.expectedResult, returnPayload); }; gpii.tests.INIHandlerSet = function () { fluid.each(tests, function (v, k) { setTester(k, v); }); }; gpii.tests.INIHandlerGet = function () { fluid.each(tests, function (v, k) { getTester(k, v); }); }; fluid.defaults("gpii.tests.INISettingsHandler", { gradeNames: ["fluid.test.testEnvironment"], components: { tester: { type: "gpii.testsINISettingsHandlerTester" } } }); fluid.defaults("gpii.testsINISettingsHandlerTester", { gradeNames: ["fluid.test.testCaseHolder"], listeners: { onDestroy: deleteTestFiles }, modules: [{ name: "INISettingsHandler", tests: [{ expect: 4, name: "INIHandler.set", func: "gpii.tests.INIHandlerSet" }, { expect: 2, name: "INIHandler.get", func: "gpii.tests.INIHandlerGet" }] }] }); module.exports = gpii.test.runCouchTestDefs("gpii.tests.INISettingsHandler");