-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUserController.inte.spec.js
47 lines (42 loc) · 1.53 KB
/
UserController.inte.spec.js
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
const { UserController } = require("./UserController");
describe("UserController", () => {
const expected = { name: "Benoit", age: 27, gender: "M" };
beforeAll(() => {
global.store = { users: [] };
global.store.users.push(expected);
})
describe("get", () => {
describe("user exist", () => {
it("returns response with user", () => {
userController = new UserController();
const user = userController.get("Benoit");
expect(user).toEqual({ response: expected });
});
// We do NOT care about the implementation
// of the get method of the repository
// we do a social / integration test
test("resilient to refactoring", () => {
userController = new UserController();
// we will call the method that handle
// throwable error
// and our test do not have to change
userController.get = userController.get2
const user = userController.get("Benoit");
expect(user).toEqual({ response: expected });
})
});
describe("user does NOT exist", () => {
it("returns error", () => {
userController = new UserController();
const user = userController.get("UNKNOWN");
expect(user).toEqual({ error: "NOT_FOUND" });
});
test("resilient to refactoring", () => {
userController = new UserController();
userController.get = userController.get2
const user = userController.get("UNKNOWN");
expect(user).toEqual({ error: "NOT_FOUND" });
})
});
});
});