82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
import { vi } from 'vitest';
|
|
|
|
// Global mock for Thunderbird's browser.* WebExtension APIs
|
|
const browser = {
|
|
i18n: {
|
|
getMessage: vi.fn((key) => `[${key}]`),
|
|
getUILanguage: vi.fn(() => 'en-US'),
|
|
},
|
|
accounts: {
|
|
list: vi.fn(async () => []),
|
|
},
|
|
storage: {
|
|
sync: {
|
|
get: vi.fn(async (defaults) => {
|
|
if (typeof defaults === 'object' && defaults !== null) {
|
|
return { ...defaults };
|
|
}
|
|
return {};
|
|
}),
|
|
set: vi.fn(async () => {}),
|
|
remove: vi.fn(async () => {}),
|
|
},
|
|
local: {
|
|
get: vi.fn(async (defaults) => {
|
|
if (typeof defaults === 'object' && defaults !== null) {
|
|
return { ...defaults };
|
|
}
|
|
return {};
|
|
}),
|
|
set: vi.fn(async () => {}),
|
|
remove: vi.fn(async () => {}),
|
|
},
|
|
},
|
|
messages: {
|
|
getFull: vi.fn(async () => ({ headers: {}, parts: [] })),
|
|
get: vi.fn(async () => ({ tags: [] })),
|
|
tags: {
|
|
list: vi.fn(async () => []),
|
|
create: vi.fn(async () => {}),
|
|
},
|
|
update: vi.fn(async () => {}),
|
|
listAttachments: vi.fn(async () => []),
|
|
},
|
|
tabs: {
|
|
query: vi.fn(async () => []),
|
|
create: vi.fn(async () => ({})),
|
|
update: vi.fn(async () => ({})),
|
|
},
|
|
compose: {
|
|
getComposeDetails: vi.fn(async () => ({ body: '', subject: '' })),
|
|
setComposeDetails: vi.fn(async () => {}),
|
|
},
|
|
permissions: {
|
|
contains: vi.fn(async () => false),
|
|
request: vi.fn(async () => true),
|
|
},
|
|
runtime: {
|
|
getURL: vi.fn((path) => `moz-extension://fake-id/${path}`),
|
|
sendMessage: vi.fn(async () => null),
|
|
},
|
|
mailTabs: {
|
|
getSelectedMessages: vi.fn(async () => ({ messages: [{ subject: '' }] })),
|
|
},
|
|
};
|
|
|
|
// Global mock for Thunderbird's messenger.* APIs
|
|
const messenger = {
|
|
messageDisplay: {
|
|
getDisplayedMessage: vi.fn(async () => ({ subject: '' })),
|
|
},
|
|
compose: {
|
|
getComposeDetails: vi.fn(async () => ({ body: '' })),
|
|
setComposeDetails: vi.fn(async () => {}),
|
|
},
|
|
messages: {
|
|
continueList: vi.fn(async () => ({ messages: [] })),
|
|
},
|
|
};
|
|
|
|
// Attach to globalThis so module-level code can access them
|
|
globalThis.browser = browser;
|
|
globalThis.messenger = messenger;
|