Skip to content

Commit 11c8d13

Browse files
committed
fix: tests pattern
1 parent d5ab50e commit 11c8d13

File tree

1 file changed

+36
-44
lines changed

1 file changed

+36
-44
lines changed

src/features/twitter/controllers/twitter-controller.test.ts

+36-44
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Request, Response } from 'express';
1+
import type { NextFunction, Request, Response } from 'express';
22
import jwt from 'jsonwebtoken';
33
import { mock, mockDeep } from 'vitest-mock-extended';
44

@@ -11,49 +11,44 @@ import { AuthorizeTwitterService } from '../services/authorize-twitter-service';
1111
import type { TwitterService } from '../services/twitter-service';
1212
import { TwitterController } from './twitter-controller';
1313

14-
const makeSut = () => {
15-
const mockLogger: Logger = mock<Logger>(loggerMock);
16-
const twitterServiceMock = mock<TwitterService>({
17-
getTwitterOAuthToken: vi.fn(),
18-
getTwitterUser: vi.fn(),
19-
});
20-
21-
const authorizeTwitterService = mock<AuthorizeTwitterService>(
22-
new AuthorizeTwitterService(
23-
mockLogger,
24-
twitterServiceMock,
25-
accountRepositoryMock,
26-
tokenRepositoryMock
27-
)
28-
);
29-
30-
const authController = new TwitterController(authorizeTwitterService);
31-
32-
const req = mockDeep<Request>();
33-
const res = {
34-
json: vi.fn(),
35-
send: vi.fn(),
36-
status: vi.fn().mockReturnThis(),
37-
} as unknown as Response;
38-
const next = vi.fn();
39-
40-
return {
41-
authController,
42-
authorizeTwitterService,
43-
mockLogger,
44-
next,
45-
req,
46-
res,
47-
twitterServiceMock,
48-
};
49-
};
50-
5114
describe('[Controller] Twitter', () => {
15+
let mockLogger: Logger;
16+
let twitterServiceMock: TwitterService;
17+
let authorizeTwitterService: AuthorizeTwitterService;
18+
let authController: TwitterController;
19+
let req: Request;
20+
let res: Response;
21+
let next: NextFunction;
22+
23+
beforeEach(() => {
24+
mockLogger = mock<Logger>(loggerMock);
25+
26+
twitterServiceMock = mock<TwitterService>({
27+
getTwitterOAuthToken: vi.fn(),
28+
getTwitterUser: vi.fn(),
29+
});
30+
31+
authorizeTwitterService = mock<AuthorizeTwitterService>(
32+
new AuthorizeTwitterService(
33+
mockLogger,
34+
twitterServiceMock,
35+
accountRepositoryMock,
36+
tokenRepositoryMock
37+
)
38+
);
39+
40+
authController = new TwitterController(authorizeTwitterService);
41+
42+
req = mockDeep<Request>();
43+
res = {
44+
json: vi.fn(),
45+
send: vi.fn(),
46+
status: vi.fn().mockReturnThis(),
47+
} as unknown as Response;
48+
next = vi.fn() as unknown as NextFunction;
49+
});
5250
describe('callback', () => {
5351
it('returns code', async () => {
54-
const { authController, authorizeTwitterService, next, req, res } =
55-
makeSut();
56-
5752
const spyAuthorizeTwitter = vi
5853
.spyOn(authorizeTwitterService, 'execute')
5954
.mockReturnThis();
@@ -71,7 +66,6 @@ describe('[Controller] Twitter', () => {
7166

7267
describe('login', () => {
7368
it('return URLs when the token is valid', async () => {
74-
const { authController, next, req, res } = makeSut();
7569
const mockPayload = {
7670
name: 'John Doe',
7771
userId: '12345',
@@ -90,8 +84,6 @@ describe('[Controller] Twitter', () => {
9084
});
9185

9286
it('returns 401 when token is invalid', () => {
93-
const { authController, next, req, res } = makeSut();
94-
9587
req.headers.authorization = undefined;
9688

9789
authController.login(req, res, next);

0 commit comments

Comments
 (0)