mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-01-04 07:10:06 +08:00
76 lines
2.8 KiB
JavaScript
76 lines
2.8 KiB
JavaScript
import { ipcRenderer } from 'electron';
|
|
import { BadgeStore } from 'mailspring-exports';
|
|
import SystemTrayIconStore from '../lib/system-tray-icon-store';
|
|
|
|
const { INBOX_ZERO_ICON, INBOX_UNREAD_ICON, INBOX_UNREAD_ALT_ICON } = SystemTrayIconStore;
|
|
|
|
describe('SystemTrayIconStore', function systemTrayIconStore() {
|
|
beforeEach(() => {
|
|
spyOn(ipcRenderer, 'send');
|
|
this.iconStore = new SystemTrayIconStore();
|
|
});
|
|
|
|
function getCallData() {
|
|
const { args } = ipcRenderer.send.calls[0];
|
|
return { iconPath: args[1], isTemplateImg: args[3] };
|
|
}
|
|
|
|
describe('_getIconImageData', () => {
|
|
it('shows inbox zero icon when isInboxZero and window is focused', () => {
|
|
const { iconPath, isTemplateImg } = this.iconStore._getIconImageData(true, false);
|
|
expect(iconPath).toBe(INBOX_ZERO_ICON);
|
|
expect(isTemplateImg).toBe(true);
|
|
});
|
|
|
|
it('shows inbox zero icon when isInboxZero and window is blurred', () => {
|
|
const { iconPath, isTemplateImg } = this.iconStore._getIconImageData(true, true);
|
|
expect(iconPath).toBe(INBOX_ZERO_ICON);
|
|
expect(isTemplateImg).toBe(true);
|
|
});
|
|
|
|
it('shows inbox full icon when not isInboxZero and window is focused', () => {
|
|
const { iconPath, isTemplateImg } = this.iconStore._getIconImageData(false, false);
|
|
expect(iconPath).toBe(INBOX_UNREAD_ICON);
|
|
expect(isTemplateImg).toBe(true);
|
|
});
|
|
|
|
it('shows inbox full /alt/ icon when not isInboxZero and window is blurred', () => {
|
|
const { iconPath, isTemplateImg } = this.iconStore._getIconImageData(false, true);
|
|
expect(iconPath).toBe(INBOX_UNREAD_ALT_ICON);
|
|
expect(isTemplateImg).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('updating the icon based on focus and blur', () => {
|
|
it('always shows inbox full icon when the window gets focused', () => {
|
|
spyOn(BadgeStore, 'total').andReturn(1);
|
|
this.iconStore._onWindowFocus();
|
|
const { iconPath } = getCallData();
|
|
expect(iconPath).toBe(INBOX_UNREAD_ICON);
|
|
});
|
|
|
|
it('shows inbox full /alt/ icon ONLY when window is currently blurred and total count changes', () => {
|
|
this.iconStore._windowBlurred = false;
|
|
this.iconStore._onWindowBlur();
|
|
expect(ipcRenderer.send).not.toHaveBeenCalled();
|
|
|
|
// BadgeStore triggers a change
|
|
spyOn(BadgeStore, 'total').andReturn(1);
|
|
this.iconStore._updateIcon();
|
|
|
|
const { iconPath } = getCallData();
|
|
expect(iconPath).toBe(INBOX_UNREAD_ALT_ICON);
|
|
});
|
|
|
|
it('does not show inbox full /alt/ icon when window is currently focused and total count changes', () => {
|
|
this.iconStore._windowBlurred = false;
|
|
|
|
// BadgeStore triggers a change
|
|
spyOn(BadgeStore, 'total').andReturn(1);
|
|
this.iconStore._updateIcon();
|
|
|
|
const { iconPath } = getCallData();
|
|
expect(iconPath).toBe(INBOX_UNREAD_ICON);
|
|
});
|
|
});
|
|
});
|