test_AboutWelcomeAttribution.js (2330B)
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 { AboutWelcomeDefaults } = ChromeUtils.importESModule( 8 "resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs" 9 ); 10 const { sinon } = ChromeUtils.importESModule( 11 "resource://testing-common/Sinon.sys.mjs" 12 ); 13 const { AttributionCode } = ChromeUtils.importESModule( 14 "moz-src:///browser/components/attribution/AttributionCode.sys.mjs" 15 ); 16 const { AddonRepository } = ChromeUtils.importESModule( 17 "resource://gre/modules/addons/AddonRepository.sys.mjs" 18 ); 19 20 const TEST_ATTRIBUTION_DATA = { 21 source: "addons.mozilla.org", 22 medium: "referral", 23 campaign: "non-fx-button", 24 content: "rta:iridium%40particlecore.github.io", 25 }; 26 27 add_task(async function test_handleAddonInfoNotFound() { 28 let sandbox = sinon.createSandbox(); 29 const stub = sandbox.stub(AttributionCode, "getAttrDataAsync").resolves(null); 30 let result = await AboutWelcomeDefaults.getAttributionContent(); 31 equal(stub.callCount, 1, "Call was made"); 32 equal(result, null, "No data is returned"); 33 34 sandbox.restore(); 35 }); 36 37 add_task(async function test_UAAttribution() { 38 let sandbox = sinon.createSandbox(); 39 const stub = sandbox 40 .stub(AttributionCode, "getAttrDataAsync") 41 .resolves({ ua: "test" }); 42 let result = await AboutWelcomeDefaults.getAttributionContent(); 43 equal(stub.callCount, 1, "Call was made"); 44 equal(result.template, undefined, "Template was not returned"); 45 equal(result.ua, "test", "UA was returned"); 46 47 sandbox.restore(); 48 }); 49 50 add_task(async function test_formatAttributionData() { 51 let sandbox = sinon.createSandbox(); 52 const TEST_ADDON_INFO = { 53 sourceURI: { scheme: "https", spec: "https://test.xpi" }, 54 name: "Test Add-on", 55 icons: { 64: "http://test.svg" }, 56 }; 57 sandbox 58 .stub(AttributionCode, "getAttrDataAsync") 59 .resolves(TEST_ATTRIBUTION_DATA); 60 sandbox.stub(AddonRepository, "getAddonsByIDs").resolves([TEST_ADDON_INFO]); 61 let result = await AboutWelcomeDefaults.getAttributionContent( 62 TEST_ATTRIBUTION_DATA 63 ); 64 equal(AddonRepository.getAddonsByIDs.callCount, 1, "Retrieve addon content"); 65 equal(result.template, "return_to_amo", "RTAMO template returned"); 66 equal(result.name, TEST_ADDON_INFO.name, "AddonInfo returned"); 67 68 sandbox.restore(); 69 });