mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-25 11:28:51 +01:00
987daee854
* fix(17463): persist popup when sw is restarted * feat(17855): clear local variable when close window
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);
|
|
});
|
|
});
|