MCPcopy Create free account
hub / github.com/zxlie/FeHelper / createChromeMock

Function createChromeMock

test/background-menu.test.js:22–96  ·  view source on GitHub ↗
(storageSeed = createStorageSeed())

Source from the content-addressed store, hash-verified

20}
21
22function createChromeMock(storageSeed = createStorageSeed()) {
23 const createdMenus = [];
24 const clickListeners = [];
25 const scriptCalls = [];
26 const storageData = { ...storageSeed };
27
28 const getStorage = (keys, callback) => {
29 if (keys === null) {
30 callback({ ...storageData });
31 return;
32 }
33
34 if (Array.isArray(keys)) {
35 const result = {};
36 keys.forEach(key => {
37 if (Object.prototype.hasOwnProperty.call(storageData, key)) {
38 result[key] = storageData[key];
39 }
40 });
41 callback(result);
42 return;
43 }
44
45 if (typeof keys === 'string') {
46 callback({ [keys]: storageData[keys] });
47 return;
48 }
49
50 callback({});
51 };
52
53 const chromeMock = {
54 runtime: {
55 lastError: null,
56 getManifest: () => ({ homepage_url: 'https://fehelper.com/' }),
57 openOptionsPage: vi.fn()
58 },
59 contextMenus: {
60 create: vi.fn((item, callback) => {
61 createdMenus.push({ ...item });
62 callback && callback();
63 }),
64 removeAll: vi.fn(callback => {
65 createdMenus.length = 0;
66 callback && callback();
67 }),
68 onClicked: {
69 addListener: vi.fn(listener => clickListeners.push(listener))
70 }
71 },
72 scripting: {
73 executeScript: vi.fn((opts, callback) => {
74 scriptCalls.push(opts);
75 const result = [{ result: opts.args ? opts.args[0] : undefined }];
76 callback && callback(result);
77 return Promise.resolve(result);
78 })
79 },

Callers 1

Calls 1

createStorageSeedFunction · 0.85

Tested by

no test coverage detected