We're cooked. <skull emoji> - Added options page for YAML palette editing, live color preview, and diagnostics. - Implemented theme engine to parse Gogh YAML palettes and derive semantic themes. - Configured TypeScript and Vite for building the extension. - Created new tab and popup HTML pages with corresponding scripts and styles. - Established storage management for user configurations in Chrome storage. - Added icons for the extension and updated manifest for MV3 compatibility.
43 lines
971 B
JavaScript
43 lines
971 B
JavaScript
import * as storageModule from "./storage";
|
|
|
|
const get = jest.fn();
|
|
const set = jest.fn();
|
|
|
|
global.chrome = {
|
|
storage: {
|
|
sync: {
|
|
set,
|
|
get
|
|
}
|
|
}
|
|
};
|
|
|
|
const chromeGetStorageSpy = jest.spyOn(chrome.storage.sync, 'get');
|
|
const chromeSetStorageSpy = jest.spyOn(chrome.storage.sync, 'set');
|
|
|
|
describe("storage → getStorage", () => {
|
|
beforeEach(() => {
|
|
jest.resetAllMocks();
|
|
});
|
|
|
|
test("chrome get storage api method called", () => {
|
|
const getCallback = jest.fn();
|
|
|
|
storageModule.getStorage("Test", getCallback);
|
|
|
|
expect(chromeGetStorageSpy).toHaveBeenCalledWith(["Test"], expect.any(Function));
|
|
});
|
|
});
|
|
|
|
describe("storage → setStorage", () => {
|
|
beforeEach(() => {
|
|
jest.resetAllMocks();
|
|
});
|
|
|
|
test("chrome set storage api method called", () => {
|
|
storageModule.setStorage("Test", "Value");
|
|
|
|
expect(chromeSetStorageSpy).toHaveBeenCalledWith({["Test"]: "Value"});
|
|
});
|
|
});
|