text: 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()
        })
      })
    })
  })
  