test_ASRouter_getTargetingParameters.js (1555B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ 3 */ 4 5 "use strict"; 6 7 const { ASRouter } = ChromeUtils.importESModule( 8 "resource:///modules/asrouter/ASRouter.sys.mjs" 9 ); 10 11 add_task(async function nested_objects() { 12 const target = { 13 get foo() { 14 return Promise.resolve("foo"); 15 }, 16 baz: { 17 get qux() { 18 return Promise.resolve("qux"); 19 }, 20 get corge() { 21 return { 22 get grault() { 23 return Promise.resolve("grault"); 24 }, 25 }; 26 }, 27 }, 28 }; 29 30 const params = await ASRouter.getTargetingParameters(target); 31 Assert.deepEqual( 32 params, 33 { 34 foo: "foo", 35 baz: { 36 qux: "qux", 37 corge: { 38 grault: "grault", 39 }, 40 }, 41 }, 42 "getTargetingParameters should resolve nested promises" 43 ); 44 }); 45 46 add_task(async function arrays() { 47 const target = { 48 foo: [1, 2, 3], 49 bar: [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)], 50 baz: Promise.resolve([1, 2, 3]), 51 qux: Promise.resolve([ 52 Promise.resolve(1), 53 Promise.resolve(2), 54 Promise.resolve(3), 55 ]), 56 quux: Promise.resolve({ 57 corge: [Promise.resolve(1), 2, 3], 58 }), 59 }; 60 61 const params = await ASRouter.getTargetingParameters(target); 62 Assert.deepEqual( 63 params, 64 { 65 foo: [1, 2, 3], 66 bar: [1, 2, 3], 67 baz: [1, 2, 3], 68 qux: [1, 2, 3], 69 quux: { corge: [1, 2, 3] }, 70 }, 71 "getEnvironmentSnapshot should resolve arrays correctly" 72 ); 73 });