import { Injectable } from '@angular/core'; import { CLIENT_SETTINGS_SERVICE_MOCK } from '@core/mocks/client-settings.service.mock'; import { GCMockModule } from '@core/mocks/gc-module.mock'; import { BeforeEach, Spec, TestCase } from '@yourcause/test-decorators'; import { DescribeAngularService } from '@yourcause/test-decorators/angular'; import { expect } from 'chai'; import { VerificationCodeService } from './verification-code.service'; @Injectable({ providedIn: 'root' }) @DescribeAngularService(VerificationCodeService, { imports: [ GCMockModule ], providers: [ CLIENT_SETTINGS_SERVICE_MOCK ] }) export class VerificationCodeServiceSpec implements Spec { @BeforeEach() mock (service: VerificationCodeService) { service['tokenService']['login'] = async () => { // eslint-disable-next-line no-throw-literal throw { error: { message: 'Security_Code_Invalid' } }; }; } @TestCase('login with verification code should return codeInvalid correctly') async returnCodeInvalid (service: VerificationCodeService) { const response = await service.loginWithVerificationCode( 'email@email.com', 'password', '1234', true ); expect(response.codeInvalid).to.be.true; expect(response.codeExpired).to.be.false; } @TestCase('login with verification code should return codeExpired correctly') async returnCodeExpired (service: VerificationCodeService) { service['tokenService']['login'] = async () => { // eslint-disable-next-line no-throw-literal throw { error: { message: 'Security_Code_Expired' } }; }; const response = await service.loginWithVerificationCode( 'email@email.com', 'password', '1234', true ); expect(response.codeExpired).to.be.true; expect(response.codeInvalid).to.be.false; } }