diff options
Diffstat (limited to 'browser/components/pocket/test/unit/browser_pocket_pktTelemetry.js')
-rw-r--r-- | browser/components/pocket/test/unit/browser_pocket_pktTelemetry.js | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/browser/components/pocket/test/unit/browser_pocket_pktTelemetry.js b/browser/components/pocket/test/unit/browser_pocket_pktTelemetry.js new file mode 100644 index 0000000000..44aa738fac --- /dev/null +++ b/browser/components/pocket/test/unit/browser_pocket_pktTelemetry.js @@ -0,0 +1,91 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +ChromeUtils.defineESModuleGetters(this, { + pktTelemetry: "chrome://pocket/content/pktTelemetry.sys.mjs", +}); + +function test_runner(test) { + let testTask = async () => { + // Before each + const sandbox = sinon.createSandbox(); + try { + await test({ sandbox }); + } finally { + // After each + sandbox.restore(); + } + }; + + // Copy the name of the test function to identify the test + Object.defineProperty(testTask, "name", { value: test.name }); + add_task(testTask); +} + +test_runner(async function test_submitPocketButtonPing({ sandbox }) { + const creationDate = "19640"; + const impressionId = "{422e3da9-c694-4fd2-b676-8ae070156128}"; + sandbox.stub(pktTelemetry, "impressionId").value(impressionId); + sandbox.stub(pktTelemetry, "_profileCreationDate").returns(creationDate); + + const eventAction = "some action like 'click'"; + const eventSource = "some source like 'save_button'"; + + const assertConstantStuff = () => { + Assert.equal( + "{" + Glean.pocketButton.impressionId.testGetValue() + "}", + impressionId + ); + Assert.equal(Glean.pocketButton.pocketLoggedInStatus.testGetValue(), false); + Assert.equal( + Glean.pocketButton.profileCreationDate.testGetValue(), + creationDate + ); + + Assert.equal(Glean.pocketButton.eventAction.testGetValue(), eventAction); + Assert.equal(Glean.pocketButton.eventSource.testGetValue(), eventSource); + }; + + let submitted = false; + GleanPings.pocketButton.testBeforeNextSubmit(() => { + submitted = true; + assertConstantStuff(); + Assert.equal(Glean.pocketButton.eventPosition.testGetValue(), null); + Assert.equal(Glean.pocketButton.model.testGetValue(), null); + }); + + pktTelemetry.submitPocketButtonPing(eventAction, eventSource); + Assert.ok(submitted, "Ping submitted successfully"); + + submitted = false; + GleanPings.pocketButton.testBeforeNextSubmit(() => { + submitted = true; + assertConstantStuff(); + Assert.equal(Glean.pocketButton.eventPosition.testGetValue(), 0); + Assert.equal(Glean.pocketButton.model.testGetValue(), null); + }); + + pktTelemetry.submitPocketButtonPing(eventAction, eventSource, 0, null); + Assert.ok(submitted, "Ping submitted successfully"); + + submitted = false; + GleanPings.pocketButton.testBeforeNextSubmit(() => { + submitted = true; + assertConstantStuff(); + // falsey but not undefined positions will be omitted. + Assert.equal(Glean.pocketButton.eventPosition.testGetValue(), null); + Assert.equal( + Glean.pocketButton.model.testGetValue(), + "some-really-groovy-model" + ); + }); + + pktTelemetry.submitPocketButtonPing( + eventAction, + eventSource, + false, + "some-really-groovy-model" + ); + Assert.ok(submitted, "Ping submitted successfully"); +}); |