import moment from 'moment'; import * as React from 'react'; import { shallow } from 'enzyme'; import NotificationArea from '../../src/renderer/components/NotificationArea'; import { AfterDisconnect } from '../../src/shared/daemon-rpc-types'; import AccountExpiry from '../../src/renderer/lib/account-expiry'; import { expect } from 'chai'; describe('components/NotificationArea', () => { const defaultVersion = { consistent: true, currentIsSupported: true, upToDate: true, current: '2018.2', latest: '2018.2-beta1', latestStable: '2018.2', }; const defaultExpiry = new AccountExpiry( moment() .add(1, 'year') .format(), 'en', ); it('handles disconnecting state', () => { for (const reason of ['nothing', 'block'] as AfterDisconnect[]) { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('visible')).to.be.false; } }); it('handles disconnecting state when reconnecting', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('visible')).to.be.true; }); it('handles connected state', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('visible')).to.be.false; }); it('handles disconnected state', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('visible')).to.be.false; }); it('handles disconnected state, blocking when connected', () => { const component = shallow( {}} blockWhenDisconnected={true} />, ); expect(component.state('visible')).to.be.true; }); it('handles connecting state', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('blocking'); expect(component.state('visible')).to.be.true; }); it('handles blocked state', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('blocking'); expect(component.state('visible')).to.be.true; }); it('handles inconsistent version', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('inconsistent-version'); expect(component.state('visible')).to.be.true; }); it('handles unsupported version', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('unsupported-version'); expect(component.state('visible')).to.be.true; }); it('handles stable update available', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('update-available'); expect(component.state('upgradeVersion')).to.be.equal('2018.3'); expect(component.state('visible')).to.be.true; }); it('handles beta update available', () => { const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('update-available'); expect(component.state('upgradeVersion')).to.be.equal('2018.4-beta3'); expect(component.state('visible')).to.be.true; }); it('handles time running low', () => { const expiry = new AccountExpiry( moment() .add(2, 'days') .format(), 'en', ); const component = shallow( {}} blockWhenDisconnected={false} />, ); expect(component.state('type')).to.be.equal('expires-soon'); expect(component.state('visible')).to.be.true; }); });