Skip to content

Commit 9861845

Browse files
committed
refactor-v3 Fix tests
1 parent 9eeeefc commit 9861845

File tree

5 files changed

+50
-37
lines changed

5 files changed

+50
-37
lines changed

.eslintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"prettier/prettier": 2,
2323
"no-error-on-unmatched-pattern": "off",
2424
"@typescript-eslint/no-explicit-any": "off", // TODO: Remove this.
25-
"no-return-await": "warn",
25+
"no-return-await": "off",
2626
"no-shadow": "off",
2727
"@typescript-eslint/no-shadow": ["error"]
2828
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"build": "run-s clean lint:fix transpile",
2323
"send:mail": "ts-node scripts/mail-test",
2424
"load:fake": "NODE_ENV=test ts-node scripts/fake-loader",
25-
"test": "NODE_ENV=test yarn migrate && NODE_ENV=test jest --forceExit --detectOpenHandles --maxWorkers=1",
25+
"test": "NODE_ENV=test yarn migrate && NODE_ENV=test jest --forceExit --detectOpenHandles --maxWorkers=1 --verbose",
2626
"seed": "knex seed:run --knexfile=knexfile.ts --verbose",
2727
"migrate": "knex migrate:latest --knexfile=knexfile.ts --verbose",
2828
"rollback": "knex migrate:rollback --knexfile=knexfile.ts --verbose",

test/api/auth.spec.ts

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,21 @@ import request from 'supertest';
33
import { StatusCodes } from 'http-status-codes';
44

55
import app from '../../src/app';
6-
import { clearDb, getRandomElement } from '../helper';
7-
import * as userService from '../../src/services/userService';
6+
import { init, getRandomElement, TEST_PASSWORD, TEST_EMAIL } from '../helper';
87

98
describe('Auth Workflow', () => {
10-
let authorization: string;
11-
let accessToken: string;
9+
const email = TEST_EMAIL;
10+
const password = TEST_PASSWORD;
1211

13-
const user = {
14-
name: faker.name.findName(),
15-
email: faker.internet.email(),
16-
password: faker.internet.password()
17-
};
18-
const { email, password } = user;
12+
let accessToken: string;
13+
let authorization: string;
1914

2015
beforeAll(async () => {
21-
await clearDb();
22-
23-
await userService.insert(user);
16+
await init();
2417

2518
const response = await request(app)
2619
.post('/login')
27-
.send({ email, password });
20+
.send({ email, password: TEST_PASSWORD });
2821

2922
authorization = `Bearer ${response.body.data.refreshToken}`;
3023
});

test/api/user.spec.ts

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,21 @@ import request from 'supertest';
33
import { StatusCodes } from 'http-status-codes';
44

55
import app from '../../src/app';
6-
import Role from '../../src/resources/enums/Role';
7-
import { clearDb, getRandomElement } from '../helper';
8-
import * as userService from '../../src/services/userService';
6+
import { getRandomElement, init, TEST_EMAIL, TEST_PASSWORD } from '../helper';
97

108
describe('GET /users API test', () => {
9+
const email = TEST_EMAIL;
10+
const password = TEST_PASSWORD;
11+
1112
let authorization: string;
12-
const user = {
13-
name: faker.name.findName(),
14-
email: 'first-user@starter.com',
15-
password: faker.internet.password()
16-
};
17-
const { email, password } = user;
1813

1914
beforeAll(async () => {
20-
await clearDb();
21-
22-
await userService.insert(user);
15+
await init();
2316

2417
const response = await request(app)
2518
.post('/login')
2619
.send({ email, password });
20+
2721
authorization = `Bearer ${response.body.data.accessToken}`;
2822
});
2923

@@ -56,19 +50,17 @@ describe('GET /users API test', () => {
5650

5751
describe('POST /users API test', () => {
5852
let authorization: string;
59-
const user = {
60-
roleId: Role.NORMAL_USER,
61-
name: faker.name.findName(),
62-
email: 'login-user@starter.com',
63-
password: faker.internet.password()
64-
};
65-
const { email, password } = user;
53+
54+
const email = TEST_EMAIL;
55+
const password = TEST_PASSWORD;
6656

6757
beforeAll(async () => {
68-
await userService.insert(user);
58+
await init();
59+
6960
const response = await request(app)
7061
.post('/login')
7162
.send({ email, password });
63+
7264
authorization = `Bearer ${response.body.data.accessToken}`;
7365
});
7466

test/helper.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,45 @@
11
import faker from 'faker';
22

33
import knex from '../src/config/knex';
4+
import UserDetail from '../src/domain/entities/UserDetail';
45
import Table from '../src/resources/enums/Table';
56

7+
import * as userService from '../src/services/userService';
8+
69
const tables = [Table.USER_SESSIONS, Table.USERS];
710

11+
export const TEST_EMAIL = faker.internet.email();
12+
export const TEST_PASSWORD = faker.internet.password();
13+
let userData;
14+
15+
/**
16+
* Create user.
17+
*
18+
* @returns Promise
19+
*/
20+
async function createUser(): Promise<UserDetail> {
21+
return await userService.insert({
22+
email: TEST_EMAIL,
23+
password: TEST_PASSWORD,
24+
name: faker.name.findName()
25+
});
26+
}
27+
828
/**
929
* Delete all table's data.
1030
*/
11-
export async function clearDb(): Promise<void> {
31+
export async function init(): Promise<UserDetail> {
32+
if (userData) {
33+
return userData;
34+
}
35+
1236
for (const table of tables) {
1337
await knex(table).del();
1438
}
39+
40+
userData = await createUser();
41+
42+
return userData;
1543
}
1644

1745
/**

0 commit comments

Comments
 (0)