fune/browser/components/newtab/test/unit/asrouter/ASRouterChild.test.js

74 lines
2.2 KiB
JavaScript

/*eslint max-nested-callbacks: ["error", 10]*/
import { ASRouterChild } from "actors/ASRouterChild.jsm";
import { MESSAGE_TYPE_HASH as msg } from "common/ActorConstants.sys.mjs";
import { GlobalOverrider } from "test/unit/utils";
describe("ASRouterChild", () => {
let asRouterChild = null;
let globals = null;
let overrider = null;
let sandbox = null;
beforeEach(() => {
sandbox = sinon.createSandbox();
globals = {
Cu: {
cloneInto: sandbox.stub().returns(Promise.resolve()),
},
};
overrider = new GlobalOverrider();
overrider.set(globals);
asRouterChild = new ASRouterChild();
asRouterChild.telemetry = {
sendTelemetry: sandbox.stub(),
};
sandbox.stub(asRouterChild, "sendAsyncMessage");
sandbox.stub(asRouterChild, "sendQuery").returns(Promise.resolve());
});
afterEach(() => {
sandbox.restore();
overrider.restore();
asRouterChild = null;
});
describe("asRouterMessage", () => {
describe("uses sendAsyncMessage for types that don't need an async response", () => {
[
msg.DISABLE_PROVIDER,
msg.ENABLE_PROVIDER,
msg.EXPIRE_QUERY_CACHE,
msg.FORCE_WHATSNEW_PANEL,
msg.IMPRESSION,
msg.RESET_PROVIDER_PREF,
msg.SET_PROVIDER_USER_PREF,
msg.USER_ACTION,
].forEach(type => {
it(`type ${type}`, () => {
asRouterChild.asRouterMessage({
type,
data: {
something: 1,
},
});
sandbox.assert.calledOnce(asRouterChild.sendAsyncMessage);
sandbox.assert.calledWith(asRouterChild.sendAsyncMessage, type, {
something: 1,
});
});
});
});
describe("use sends messages that need a response using sendQuery", () => {
it("NEWTAB_MESSAGE_REQUEST", () => {
const type = msg.NEWTAB_MESSAGE_REQUEST;
asRouterChild.asRouterMessage({
type,
data: {
something: 1,
},
});
sandbox.assert.calledOnce(asRouterChild.sendQuery);
sandbox.assert.calledWith(asRouterChild.sendQuery, type, {
something: 1,
});
});
});
});
});