/** * A helpers for testing states in isolation from AuthFlow */ import sinon from 'sinon'; export function bootstrap() { const context = { getState: sinon.stub(), run() {}, setState() {}, getRequest: sinon.stub(), navigate() {}, }; const mock = sinon.mock(context); mock.expects('run').never(); mock.expects('navigate').never(); mock.expects('setState').never(); return { context, mock }; } export function expectState(mock, state) { return mock .expects('setState') .once() .withExactArgs(sinon.match.instanceOf(state)); } export function expectNavigate( mock, route, options: { [key: string]: any } | void, ) { if (options) { return mock .expects('navigate') .once() .withExactArgs(route, sinon.match(options)); } return mock .expects('navigate') .once() .withExactArgs(route); } export function expectRun(mock, ...args) { return mock .expects('run') .once() .withExactArgs(...args); }