From 1778adae0d029a53e35c219098def8382040711c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 5 Jul 2019 17:52:37 +0200 Subject: [PATCH] tests: Add Params.parse() unit tests Commit 46874eed0 accidentally changed the behavior of the function in an incompatible way. Before addressing the actual issue, add a reproducer to the unit tests to hopefully prevent future breakage. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/615 --- tests/meson.build | 2 +- tests/unit/params.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/unit/params.js diff --git a/tests/meson.build b/tests/meson.build index a6726f7bc..1e84f423c 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -10,7 +10,7 @@ run_test = configure_file( testenv = environment() testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data')) -foreach test : ['insertSorted', 'jsParse', 'markup', 'url'] +foreach test : ['insertSorted', 'jsParse', 'markup', 'params', 'url'] test(test, run_test, args: 'unit/@0@.js'.format(test), env: testenv, diff --git a/tests/unit/params.js b/tests/unit/params.js new file mode 100644 index 000000000..6ac4cc10c --- /dev/null +++ b/tests/unit/params.js @@ -0,0 +1,32 @@ +const JsUnit = imports.jsUnit; +const Params = imports.misc.params; + +function assertParamsEqual(params, expected) { + for (let p in params) { + JsUnit.assertTrue(p in expected); + JsUnit.assertEquals(params[p], expected[p]); + } +} + +let defaults = { + foo: 'This is a test', + bar: null, + baz: 42 +}; + +assertParamsEqual( + Params.parse(null, defaults), + defaults); + +assertParamsEqual( + Params.parse({ bar: 23 }, defaults), + { foo: 'This is a test', bar: 23, baz: 42 }); + +JsUnit.assertRaises( + () => { + Params.parse({ extraArg: 'quz' }, defaults); + }); + +assertParamsEqual( + Params.parse({ extraArg: 'quz' }, defaults, true), + { foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz' });