(storageSeed = createStorageSeed())
| 20 | } |
| 21 | |
| 22 | function 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 | }, |
no test coverage detected