-
Notifications
You must be signed in to change notification settings - Fork 1
/
app.service.spec.ts
53 lines (43 loc) · 1.68 KB
/
app.service.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { ConfigService } from '@nestjs/config';
import { Test, TestingModule } from '@nestjs/testing';
import { PrismaService, RoleService, UserService } from '@snipcode/domain';
import { mock } from 'jest-mock-extended';
import { AppService } from './app.service';
const prismaServiceMock = mock<PrismaService>();
const roleServiceMock = mock<RoleService>();
const userServiceMock = mock<UserService>();
const { ADMIN_PASSWORD } = process.env;
describe('Test App Service', () => {
let appService: AppService;
let roleService: RoleService;
let userService: UserService;
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
providers: [
{ provide: PrismaService, useValue: prismaServiceMock },
ConfigService,
{ provide: UserService, useValue: userServiceMock },
{ provide: RoleService, useValue: roleServiceMock },
AppService,
],
}).compile();
appService = app.get<AppService>(AppService);
roleService = app.get<RoleService>(RoleService);
userService = app.get<UserService>(UserService);
});
test('load default roles and users on service initialization', async () => {
const role = {
createdAt: new Date(),
description: 'Administrator',
id: '1',
level: 1,
name: 'admin' as const,
updatedAt: new Date(),
};
roleServiceMock.findByName.mockResolvedValueOnce(role);
await expect(appService.onModuleInit()).resolves.not.toThrow();
expect(roleService.loadRoles).toHaveBeenCalledTimes(1);
expect(userService.loadAdminUser).toHaveBeenCalledTimes(1);
expect(userService.loadAdminUser).toHaveBeenCalledWith(role, ADMIN_PASSWORD);
});
});