add angular-round selector
This commit is contained in:
@@ -4,10 +4,12 @@ const test = require("node:test");
|
||||
const assert = require("node:assert/strict");
|
||||
const { createBackgroundController } = require("../background.js");
|
||||
|
||||
function makeBrowser() {
|
||||
function makeBrowser(initialStorage = {}) {
|
||||
let messageListener;
|
||||
let removedListener;
|
||||
const broadcasts = [];
|
||||
const stored = { ...initialStorage };
|
||||
const storageWrites = [];
|
||||
const api = {
|
||||
runtime: {
|
||||
onMessage: {
|
||||
@@ -16,6 +18,17 @@ function makeBrowser() {
|
||||
}
|
||||
}
|
||||
},
|
||||
storage: {
|
||||
local: {
|
||||
async get(key) {
|
||||
return { [key]: stored[key] };
|
||||
},
|
||||
async set(values) {
|
||||
storageWrites.push({ ...values });
|
||||
Object.assign(stored, values);
|
||||
}
|
||||
}
|
||||
},
|
||||
tabs: {
|
||||
async sendMessage(tabId, message) {
|
||||
broadcasts.push({ tabId, message });
|
||||
@@ -32,6 +45,8 @@ function makeBrowser() {
|
||||
return {
|
||||
api,
|
||||
broadcasts,
|
||||
stored,
|
||||
storageWrites,
|
||||
send(message, sender = {}) {
|
||||
return messageListener(message, sender);
|
||||
},
|
||||
@@ -47,21 +62,21 @@ test("owns absolute state per tab and supplies it to new frames", async () => {
|
||||
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:document-ready" }, { tab: { id: 17 }, frameId: 0 }),
|
||||
{ enabled: false }
|
||||
{ enabled: false, fontStyle: "round" }
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:set-tab-enabled", tabId: 17, enabled: true }),
|
||||
{ enabled: true, available: true }
|
||||
{ enabled: true, available: true, fontStyle: "round" }
|
||||
);
|
||||
assert.deepEqual(fake.broadcasts.at(-1), {
|
||||
tabId: 17,
|
||||
message: { type: "glagolify:set-enabled", enabled: true }
|
||||
message: { type: "glagolify:set-enabled", enabled: true, fontStyle: "round" }
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:document-ready" }, { tab: { id: 17 }, frameId: 4 }),
|
||||
{ enabled: true }
|
||||
{ enabled: true, fontStyle: "round" }
|
||||
);
|
||||
|
||||
await fake.send({ type: "glagolify:set-tab-enabled", tabId: 17, enabled: true });
|
||||
@@ -69,11 +84,11 @@ test("owns absolute state per tab and supplies it to new frames", async () => {
|
||||
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:set-tab-enabled", tabId: 17, enabled: false }),
|
||||
{ enabled: false, available: true }
|
||||
{ enabled: false, available: true, fontStyle: "round" }
|
||||
);
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:document-ready" }, { tab: { id: 17 }, frameId: 5 }),
|
||||
{ enabled: false }
|
||||
{ enabled: false, fontStyle: "round" }
|
||||
);
|
||||
|
||||
fake.remove(17);
|
||||
@@ -87,7 +102,7 @@ test("keeps states isolated between tabs and reports protected tabs", async () =
|
||||
await fake.send({ type: "glagolify:set-tab-enabled", tabId: 3, enabled: true });
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:document-ready" }, { tab: { id: 4 } }),
|
||||
{ enabled: false }
|
||||
{ enabled: false, fontStyle: "round" }
|
||||
);
|
||||
|
||||
fake.api.tabs.sendMessage = async () => {
|
||||
@@ -95,6 +110,46 @@ test("keeps states isolated between tabs and reports protected tabs", async () =
|
||||
};
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:get-tab-state", tabId: 99 }),
|
||||
{ enabled: false, available: false }
|
||||
{ enabled: false, available: false, fontStyle: "round" }
|
||||
);
|
||||
});
|
||||
|
||||
test("persists the font style and updates only enabled tabs", async () => {
|
||||
const fake = makeBrowser({ glagolifyFontStyle: "angular" });
|
||||
const controller = createBackgroundController(fake.api);
|
||||
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:document-ready" }, { tab: { id: 7 } }),
|
||||
{ enabled: false, fontStyle: "angular" }
|
||||
);
|
||||
|
||||
await fake.send({ type: "glagolify:set-tab-enabled", tabId: 7, enabled: true });
|
||||
await fake.send({ type: "glagolify:set-tab-enabled", tabId: 8, enabled: false });
|
||||
const broadcastCount = fake.broadcasts.length;
|
||||
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:set-font-style", fontStyle: "round" }),
|
||||
{ fontStyle: "round", accepted: true }
|
||||
);
|
||||
assert.deepEqual(fake.storageWrites.at(-1), { glagolifyFontStyle: "round" });
|
||||
assert.equal(controller.getFontStyle(), "round");
|
||||
assert.deepEqual(fake.broadcasts.slice(broadcastCount), [
|
||||
{
|
||||
tabId: 7,
|
||||
message: {
|
||||
type: "glagolify:set-enabled",
|
||||
enabled: true,
|
||||
fontStyle: "round"
|
||||
}
|
||||
}
|
||||
]);
|
||||
|
||||
const writesBeforeRejection = fake.storageWrites.length;
|
||||
const broadcastsBeforeRejection = fake.broadcasts.length;
|
||||
assert.deepEqual(
|
||||
await fake.send({ type: "glagolify:set-font-style", fontStyle: "italic" }),
|
||||
{ fontStyle: "round", accepted: false }
|
||||
);
|
||||
assert.equal(fake.storageWrites.length, writesBeforeRejection);
|
||||
assert.equal(fake.broadcasts.length, broadcastsBeforeRejection);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user