forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/
 | 
						|
 */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const { ASRouter } = ChromeUtils.import(
 | 
						|
  "resource://activity-stream/lib/ASRouter.jsm"
 | 
						|
);
 | 
						|
 | 
						|
add_task(async function nested_objects() {
 | 
						|
  const target = {
 | 
						|
    get foo() {
 | 
						|
      return Promise.resolve("foo");
 | 
						|
    },
 | 
						|
    baz: {
 | 
						|
      get qux() {
 | 
						|
        return Promise.resolve("qux");
 | 
						|
      },
 | 
						|
      get corge() {
 | 
						|
        return {
 | 
						|
          get grault() {
 | 
						|
            return Promise.resolve("grault");
 | 
						|
          },
 | 
						|
        };
 | 
						|
      },
 | 
						|
    },
 | 
						|
  };
 | 
						|
 | 
						|
  const params = await ASRouter.getTargetingParameters(target);
 | 
						|
  Assert.deepEqual(
 | 
						|
    params,
 | 
						|
    {
 | 
						|
      foo: "foo",
 | 
						|
      baz: {
 | 
						|
        qux: "qux",
 | 
						|
        corge: {
 | 
						|
          grault: "grault",
 | 
						|
        },
 | 
						|
      },
 | 
						|
    },
 | 
						|
    "getTargetingParameters should resolve nested promises"
 | 
						|
  );
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function arrays() {
 | 
						|
  const target = {
 | 
						|
    foo: [1, 2, 3],
 | 
						|
    bar: [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)],
 | 
						|
    baz: Promise.resolve([1, 2, 3]),
 | 
						|
    qux: Promise.resolve([
 | 
						|
      Promise.resolve(1),
 | 
						|
      Promise.resolve(2),
 | 
						|
      Promise.resolve(3),
 | 
						|
    ]),
 | 
						|
    quux: Promise.resolve({
 | 
						|
      corge: [Promise.resolve(1), 2, 3],
 | 
						|
    }),
 | 
						|
  };
 | 
						|
 | 
						|
  const params = await ASRouter.getTargetingParameters(target);
 | 
						|
  Assert.deepEqual(
 | 
						|
    params,
 | 
						|
    {
 | 
						|
      foo: [1, 2, 3],
 | 
						|
      bar: [1, 2, 3],
 | 
						|
      baz: [1, 2, 3],
 | 
						|
      qux: [1, 2, 3],
 | 
						|
      quux: { corge: [1, 2, 3] },
 | 
						|
    },
 | 
						|
    "getEnvironmentSnapshot should resolve arrays correctly"
 | 
						|
  );
 | 
						|
});
 |