import { Injectable } from '@angular/core'; import { GCMockModule } from '@core/mocks/gc-module.mock'; import { AdminUserPermissions } from '@core/typings/user.typing'; import { BeforeEach, Spec, TestCase } from '@yourcause/test-decorators'; import { DescribeAngularService } from '@yourcause/test-decorators/angular'; import { expect } from 'chai'; import { AdminUsersService } from './admin-users.service'; @Injectable({ providedIn: 'root' }) @DescribeAngularService(AdminUsersService, { imports: [ GCMockModule ] }) export class AdminUsersServiceSpec implements Spec { @BeforeEach() async prepare (service: AdminUsersService) { service['adminUserResources'].getAllAdminRoles = async () => { return [ { id: 1, name: 'GC-Admin', permissions: [ AdminUserPermissions.CreateOrEditClient, AdminUserPermissions.ViewApplicants, AdminUserPermissions.ViewGrantManagers, AdminUserPermissions.ViewEmailLogs, AdminUserPermissions.Import, AdminUserPermissions.CreatePasswordResetToken, AdminUserPermissions.ViewUsers, AdminUserPermissions.EditGrantManagers, AdminUserPermissions.EditApplicants, AdminUserPermissions.CanImpersonate, AdminUserPermissions.CanAccessAllClientZones, AdminUserPermissions.ViewClient, AdminUserPermissions.CanManageSpecialHandling ] }, { id: 2, name: 'GC-Account Manager', permissions: [ AdminUserPermissions.ViewApplicants, AdminUserPermissions.ViewGrantManagers, AdminUserPermissions.ViewEmailLogs, AdminUserPermissions.CanImpersonate, AdminUserPermissions.ViewClient ] }, { id: 3, name: 'GC-Data Manager', permissions: [ AdminUserPermissions.Import, AdminUserPermissions.ViewClient ] } ]; }; service['fileService'].downloadCSV = async (csv) => { return true; }; service['adminUserResources'].activeAdminUserCount = async () => { return 9000; }; service['adminUserResources'].adminUsersPaginated = async () => { return { success: 'true', recordCount: 3, records: [ { userId: 1, firstName: 'Tyrone', lastName: 'Biggums', fullName: 'Tyrone Smoochie Wallace Biggums', email: 'bubrub@whistlesgowoo.woo', createdDate: '2019-09-09T16:52:47.4043791Z', isDeactivated: false, canAccessAllClientZones: true, clientZoneIds: [153, 154, 155, 156], roles: [1] }, { userId: 2, firstName: 'Sho', lastName: 'Nuff', fullName: 'Sho Nuff', email: 'shonuff@whosethemaster.org', createdDate: '2019-09-09T16:52:47.4043791Z', isDeactivated: false, canAccessAllClientZones: false, clientZoneIds: [153, 154, 155, 156], roles: [2] }, { userId: 3, firstName: 'Bruce', lastName: 'Banner', fullName: 'Bruce Banner', email: 'notthehulk@aol.com', createdDate: '2019-09-09T16:52:47.4043791Z', isDeactivated: true, canAccessAllClientZones: false, clientZoneIds: [153, 154, 155, 156], roles: [2, 3] }] }; }; } @TestCase('get active admin count') async testGetActiveAdminCount (service: AdminUsersService) { await service.setActiveAdminCount(); const count = service.get('activeAdminCount'); expect(count).to.equal(9000); } }