-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathusers.controller.spec.ts
118 lines (109 loc) · 3.17 KB
/
users.controller.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import { Test, TestingModule } from "@nestjs/testing";
import { UserController } from "./users.controller";
import { UserService } from "./users.service";
import { LoggerService } from '../common/service/logger.service';
import { CreateUserDto } from "./dto/create-user.dto";
import { createResponse, MockResponse } from "node-mocks-http";
import { Response } from "express";
import { JwtService } from "@nestjs/jwt";
import { EmailService } from '../common/service/mail.service';
describe("User Controller", () => {
let controller: UserController;
let service: UserService;
const createUserDto: CreateUserDto = {
username: "1sss1",
first_name: "test",
last_name: "test",
password: "Password11@",
password_reset_code: "1",
email: "te@test.com",
email_code: "eee",
activation_code: "e",
};
const mockUser = {
username: "1sss1",
first_name: "test",
last_name: "test",
password: "Password11@",
password_reset_code: "1",
email: "te@test.com",
email_code: "eee",
activation_code: "e",
};
const mockResponse = [
{
username: "1sss1",
first_name: "test",
last_name: "test",
password: "Password11@",
password_reset_code: "1",
email: "te@test.com",
email_code: "eee",
activation_code: "e",
},
{
username: "test",
first_name: "test",
last_name: "test",
password: "Password11@",
password_reset_code: "1",
email: "te@test.com",
email_code: "eee",
activation_code: "e",
},
];
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [UserController],
providers: [
{
provide: UserService,
useValue: {
create: jest.fn().mockResolvedValue(createUserDto),
findAll: jest.fn().mockResolvedValue(mockResponse),
},
},
{
provide: JwtService,
useValue: {
create: jest.fn().mockResolvedValue(true),
},
},
{
provide: LoggerService,
useValue: {
log: jest.fn(),
},
},
{
provide: EmailService,
useValue: {
sendEmailVerification: jest.fn(),
}
}
]
}).compile();
controller = module.get<UserController>(UserController);
service = module.get<UserService>(UserService);
});
describe("create()", () => {
it("should create a new user", async () => {
let response: MockResponse<Response> = createResponse();
response.json = jest.fn();
const createSpy = jest
.spyOn(service, "create")
.mockResolvedValueOnce(mockUser);
await controller.create(createUserDto, response);
expect(createSpy).toHaveBeenCalledWith(createUserDto);
});
it("should return an array of users", async () => {
let response: MockResponse<Response> = createResponse();
response.json = jest.fn();
const findSpy = jest
.spyOn(service, "findAll")
.mockResolvedValueOnce(mockResponse);
await controller.findAll(response);
expect(service.findAll).toHaveBeenCalled();
});
});
});