it("should warn when properties overlap", () => { ASRouterTargeting.combineContexts({ get foo() { return "foo"; }, }, { get foo() { return "bar"; }, }); assert.calledOnce(global.Cu.reportError); });
it("should return FxA message (is fallback)", async () => { const messages = (await OnboardingMessageProvider.getUntranslatedMessages()) .filter(m => m.id !== "RETURN_TO_AMO_1"); const context = {attributionData: {campaign: "non-fx-button", source: "addons.mozilla.org"}}; const result = await ASRouterTargeting.findMatchingMessage({messages, trigger: {id: "firstRun"}, context}); assert.isDefined(result); assert.equal(result.id, "FXA_1"); });
it("should combine the properties of the two objects", () => { const joined = ASRouterTargeting.combineContexts({ get foo() { return "foo"; }, }, { get bar() { return "bar"; }, }); assert.propertyVal(joined, "foo", "foo"); assert.propertyVal(joined, "bar", "bar"); });
it("should check targeted message before message without targeting", async () => { const messages = (await OnboardingMessageProvider.getUntranslatedMessages()); const stub = sandbox.stub(ASRouterTargeting, "checkMessageTargeting").resolves(); const context = {attributionData: {campaign: "non-fx-button", source: "addons.mozilla.org"}}; await ASRouterTargeting.findMatchingMessage({messages, trigger: {id: "firstRun"}, context}); assert.equal(stub.callCount, 6); const calls = stub.getCalls().map(call => call.args[0]); const lastCall = calls[calls.length - 1]; assert.equal(lastCall.id, "FXA_1"); });