import { Injectable } from '@angular/core'; import { GCMockModule } from '@core/mocks/gc-module.mock'; import { APIAdminClient } from '@core/typings/api/admin-client.typing'; import { Spec, TestCase } from '@yourcause/test-decorators'; import { DescribeAngularService } from '@yourcause/test-decorators/angular'; import { expect } from 'chai'; import { AdminClientService } from './admin-client.service'; @Injectable({ providedIn: 'root' }) @DescribeAngularService(AdminClientService, { imports: [ GCMockModule ] }) export class AdminClientServiceSpec implements Spec { @TestCase('snoozed til date should be blank for active') getSnoozedTilDateActive (service: AdminClientService) { const date = service.getSnoozedTilDate(APIAdminClient.ActivityAlertStatusOption.Active); expect(date).to.be.equal(''); } @TestCase('should be able to get activity alert status options') getActivityAlertStatusOptions (service: AdminClientService) { const options = service.getSnoozeDateOptions(); const hasSnooze1Month = options.some((opt) => { return opt.value === APIAdminClient.ActivityAlertStatusOption.Snooze1Month; }); expect(hasSnooze1Month).to.be.true; } @TestCase('should be able to handle snoozing') async handleSnoozeSettingOn (service: AdminClientService) { let didSnooze = false; service['adminClientResources'].snoozeActivityAlerts = async () => { didSnooze = true; }; await service.handleSnoozeSetting( 1, { isSnoozed: true, snoozedDateOption: APIAdminClient.ActivityAlertStatusOption.Snooze2Months } ); expect(didSnooze).to.be.true; } }