mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-29 07:16:36 +01:00
72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
|
import browser from 'webextension-polyfill';
|
||
|
import NotificationManager from './notification-manager';
|
||
|
|
||
|
function generateMockWindow(overrides?: object) {
|
||
|
return {
|
||
|
alwaysOnTop: false,
|
||
|
focused: true,
|
||
|
height: 620,
|
||
|
width: 360,
|
||
|
id: 1312883868,
|
||
|
incognito: false,
|
||
|
left: 1326,
|
||
|
state: 'normal',
|
||
|
tabs: [
|
||
|
{
|
||
|
active: true,
|
||
|
audible: false,
|
||
|
autoDiscardable: true,
|
||
|
discarded: false,
|
||
|
groupId: -1,
|
||
|
},
|
||
|
],
|
||
|
top: 25,
|
||
|
type: 'popup',
|
||
|
...overrides,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
jest.mock('webextension-polyfill', () => {
|
||
|
return {
|
||
|
windows: {
|
||
|
onRemoved: {
|
||
|
addListener: jest.fn(),
|
||
|
},
|
||
|
getAll: jest.fn(),
|
||
|
create: jest.fn(),
|
||
|
update: jest.fn(),
|
||
|
},
|
||
|
};
|
||
|
});
|
||
|
|
||
|
describe('Notification Manager', () => {
|
||
|
let notificationManager: NotificationManager,
|
||
|
setCurrentPopupIdSpy: (a: number) => void,
|
||
|
focusWindowSpy: () => void,
|
||
|
currentPopupId: number;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
notificationManager = new NotificationManager();
|
||
|
});
|
||
|
|
||
|
it('should not create a new popup window if there is one', async () => {
|
||
|
focusWindowSpy = jest.fn();
|
||
|
browser.windows.getAll.mockReturnValue([generateMockWindow()]);
|
||
|
browser.windows.update.mockImplementation(focusWindowSpy);
|
||
|
currentPopupId = 1312883868;
|
||
|
await notificationManager.showPopup(setCurrentPopupIdSpy, currentPopupId);
|
||
|
expect(focusWindowSpy).toHaveBeenCalledTimes(1);
|
||
|
});
|
||
|
|
||
|
it('should create a new popup window if there is no existing one', async () => {
|
||
|
const newPopupWindow = generateMockWindow();
|
||
|
setCurrentPopupIdSpy = jest.fn();
|
||
|
browser.windows.getAll.mockReturnValue([]);
|
||
|
browser.windows.create.mockReturnValue(newPopupWindow);
|
||
|
currentPopupId = undefined;
|
||
|
await notificationManager.showPopup(setCurrentPopupIdSpy, currentPopupId);
|
||
|
expect(setCurrentPopupIdSpy).toHaveBeenCalledTimes(1);
|
||
|
expect(setCurrentPopupIdSpy).toHaveBeenCalledWith(newPopupWindow.id);
|
||
|
});
|
||
|
});
|