const NotificationManager = require('../src/notification-manager'); describe('NotificationManager', () => { let manager; beforeEach(() => { manager = new NotificationManager(); }); describe('the atom global', () => it('has a notifications instance', () => { expect(atom.notifications instanceof NotificationManager).toBe(true); })); describe('adding events', () => { let addSpy; beforeEach(() => { addSpy = jasmine.createSpy(); manager.onDidAddNotification(addSpy); }); it('emits an event when a notification has been added', () => { manager.add('error', 'Some error!', { icon: 'someIcon' }); expect(addSpy).toHaveBeenCalled(); const notification = addSpy.mostRecentCall.args[0]; expect(notification.getType()).toBe('error'); expect(notification.getMessage()).toBe('Some error!'); expect(notification.getIcon()).toBe('someIcon'); }); it('emits a fatal error when ::addFatalError has been called', () => { manager.addFatalError('Some error!', { icon: 'someIcon' }); expect(addSpy).toHaveBeenCalled(); const notification = addSpy.mostRecentCall.args[0]; expect(notification.getType()).toBe('fatal'); }); it('emits an error when ::addError has been called', () => { manager.addError('Some error!', { icon: 'someIcon' }); expect(addSpy).toHaveBeenCalled(); const notification = addSpy.mostRecentCall.args[0]; expect(notification.getType()).toBe('error'); }); it('emits a warning notification when ::addWarning has been called', () => { manager.addWarning('Something!', { icon: 'someIcon' }); expect(addSpy).toHaveBeenCalled(); const notification = addSpy.mostRecentCall.args[0]; expect(notification.getType()).toBe('warning'); }); it('emits an info notification when ::addInfo has been called', () => { manager.addInfo('Something!', { icon: 'someIcon' }); expect(addSpy).toHaveBeenCalled(); const notification = addSpy.mostRecentCall.args[0]; expect(notification.getType()).toBe('info'); }); it('emits a success notification when ::addSuccess has been called', () => { manager.addSuccess('Something!', { icon: 'someIcon' }); expect(addSpy).toHaveBeenCalled(); const notification = addSpy.mostRecentCall.args[0]; expect(notification.getType()).toBe('success'); }); }); describe('clearing notifications', () => { it('clears the notifications when ::clear has been called', () => { manager.addSuccess('success'); expect(manager.getNotifications().length).toBe(1); manager.clear(); expect(manager.getNotifications().length).toBe(0); }); describe('adding events', () => { let clearSpy; beforeEach(() => { clearSpy = jasmine.createSpy(); manager.onDidClearNotifications(clearSpy); }); it('emits an event when the notifications have been cleared', () => { manager.clear(); expect(clearSpy).toHaveBeenCalled(); }); }); }); });