verify(input: string): string[] {
const isWeekend = [SUNDAY, SATURDAY]
.filter(x => x === this._timeProvider.getDay())
.length > 0;
if (isWeekend) {
throw new Error("It's the weekend!");
}
return [];
}
}
class FakeTimeProvider implements TimeProviderInterface {
fakeDay: number;
getDay(): number {
return this.fakeDay;
}
}
describe('password verifier with interfaces', () => {
test('on weekends, throws exceptions', () => {
const stubTimeProvider = new FakeTimeProvider();
stubTimeProvider.fakeDay = SUNDAY;
const verifier = new PasswordVerifier([], stubTimeProvider);
expect(() => verifier.verify('anything'))
.toThrow("It's the weekend!");
});
});