import expect from 'app/test/unexpected'; import sinon from 'sinon'; import BsodMiddleware from 'app/components/ui/bsod/BsodMiddleware'; describe('BsodMiddleware', () => { [500, 503, 555].forEach(code => it(`should dispatch for ${code}`, () => { const resp = { originalResponse: { status: code }, }; const dispatchBsod = sinon.spy(); const logger = { warn: sinon.spy() }; const middleware = new BsodMiddleware(dispatchBsod, logger as any); return expect(middleware.catch(resp), 'to be rejected with', resp).then( () => { expect(dispatchBsod, 'was called'); expect(logger.warn, 'to have a call satisfying', [ 'Unexpected response (BSoD)', { resp }, ]); }, ); }), ); [200, 404].forEach(code => it(`should not dispatch for ${code}`, () => { const resp = { originalResponse: { status: code }, }; const dispatchBsod = sinon.spy(); const logger = { warn: sinon.spy() }; const middleware = new BsodMiddleware(dispatchBsod, logger as any); return expect(middleware.catch(resp), 'to be rejected with', resp).then( () => { expect(dispatchBsod, 'was not called'); expect(logger.warn, 'was not called'); }, ); }), ); });