Source code
Revision control
Copy as Markdown
Other Tools
import { UTSessionPing, UTUserEventPing } from "test/schemas/pings";
import { GlobalOverrider } from "test/unit/utils";
import { UTEventReporting } from "lib/UTEventReporting.sys.mjs";
const FAKE_EVENT_PING_PC = {
event: "CLICK",
source: "TOP_SITES",
addon_version: "123",
user_prefs: 63,
session_id: "abc",
page: "about:newtab",
action_position: 5,
locale: "en-US",
};
const FAKE_SESSION_PING_PC = {
session_duration: 1234,
addon_version: "123",
user_prefs: 63,
session_id: "abc",
page: "about:newtab",
locale: "en-US",
};
const FAKE_EVENT_PING_UT = [
{
value: "TOP_SITES",
addon_version: "123",
user_prefs: 63,
session_id: "abc",
page: "about:newtab",
action_position: 5,
},
];
const FAKE_SESSION_PING_UT = [
{
value: 1234,
addon_version: "123",
user_prefs: 63,
session_id: "abc",
page: "about:newtab",
},
];
describe("UTEventReporting", () => {
let globals;
let sandbox;
let utEvents;
beforeEach(() => {
globals = new GlobalOverrider();
sandbox = globals.sandbox;
utEvents = new UTEventReporting();
});
afterEach(() => {
globals.restore();
});
describe("#sendUserEvent()", () => {
it("should queue up the correct data to send to Events Telemetry", async () => {
sandbox.stub(global.Glean.activityStream.eventClick, "record");
utEvents.sendUserEvent(FAKE_EVENT_PING_PC);
assert.calledWithExactly(
global.Glean.activityStream.eventClick.record,
...FAKE_EVENT_PING_UT
);
let ping = global.Glean.activityStream.eventClick.record.firstCall.args;
assert.validate(ping, UTUserEventPing);
});
});
describe("#sendSessionEndEvent()", () => {
it("should queue up the correct data to send to Events Telemetry", async () => {
sandbox.stub(global.Glean.activityStream.endSession, "record");
utEvents.sendSessionEndEvent(FAKE_SESSION_PING_PC);
assert.calledWithExactly(
global.Glean.activityStream.endSession.record,
...FAKE_SESSION_PING_UT
);
let ping = global.Glean.activityStream.endSession.record.firstCall.args;
assert.validate(ping, UTSessionPing);
});
});
});