83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
import { ASRouterParent } from "actors/ASRouterParent.sys.mjs";
|
|
import { MESSAGE_TYPE_HASH as msg } from "modules/ActorConstants.mjs";
|
|
|
|
describe("ASRouterParent", () => {
|
|
let asRouterParent = null;
|
|
let sandbox = null;
|
|
let handleMessage = null;
|
|
let tabs = null;
|
|
beforeEach(() => {
|
|
sandbox = sinon.createSandbox();
|
|
handleMessage = sandbox.stub().resolves("handle-message-result");
|
|
ASRouterParent.nextTabId = 1;
|
|
const methods = {
|
|
destroy: sandbox.stub(),
|
|
size: 1,
|
|
messageAll: sandbox.stub().resolves(),
|
|
registerActor: sandbox.stub(),
|
|
unregisterActor: sandbox.stub(),
|
|
loadingMessageHandler: Promise.resolve({
|
|
handleMessage,
|
|
}),
|
|
};
|
|
tabs = {
|
|
methods,
|
|
factory: sandbox.stub().returns(methods),
|
|
};
|
|
asRouterParent = new ASRouterParent({ tabsFactory: tabs.factory });
|
|
ASRouterParent.tabs = tabs.methods;
|
|
asRouterParent.browsingContext = {
|
|
embedderElement: {
|
|
getAttribute: () => true,
|
|
},
|
|
};
|
|
asRouterParent.tabId = ASRouterParent.nextTabId;
|
|
});
|
|
afterEach(() => {
|
|
sandbox.restore();
|
|
asRouterParent = null;
|
|
});
|
|
describe("actorCreated", () => {
|
|
it("after ASRouterTabs is instanced", () => {
|
|
asRouterParent.actorCreated();
|
|
assert.equal(asRouterParent.tabId, 2);
|
|
assert.notCalled(tabs.factory);
|
|
assert.calledOnce(tabs.methods.registerActor);
|
|
});
|
|
it("before ASRouterTabs is instanced", () => {
|
|
ASRouterParent.tabs = null;
|
|
ASRouterParent.nextTabId = 0;
|
|
asRouterParent.actorCreated();
|
|
assert.calledOnce(tabs.factory);
|
|
assert.isNotNull(ASRouterParent.tabs);
|
|
assert.equal(asRouterParent.tabId, 1);
|
|
});
|
|
});
|
|
describe("didDestroy", () => {
|
|
it("one still remains", () => {
|
|
ASRouterParent.tabs.size = 1;
|
|
asRouterParent.didDestroy();
|
|
assert.isNotNull(ASRouterParent.tabs);
|
|
assert.calledOnce(ASRouterParent.tabs.unregisterActor);
|
|
assert.notCalled(ASRouterParent.tabs.destroy);
|
|
});
|
|
it("none remain", () => {
|
|
ASRouterParent.tabs.size = 0;
|
|
const tabsCopy = ASRouterParent.tabs;
|
|
asRouterParent.didDestroy();
|
|
assert.isNull(ASRouterParent.tabs);
|
|
assert.calledOnce(tabsCopy.unregisterActor);
|
|
assert.calledOnce(tabsCopy.destroy);
|
|
});
|
|
});
|
|
describe("receiveMessage", async () => {
|
|
it("passes call to parentProcessMessageHandler and returns the result from handler", async () => {
|
|
const result = await asRouterParent.receiveMessage({
|
|
name: msg.BLOCK_MESSAGE_BY_ID,
|
|
data: { id: 1 },
|
|
});
|
|
assert.calledOnce(handleMessage);
|
|
assert.equal(result, "handle-message-result");
|
|
});
|
|
});
|
|
});
|