Skip to content

Commit f3c30d2

Browse files
committed
fix: kinha coments
1 parent 21a58de commit f3c30d2

File tree

2 files changed

+20
-118
lines changed

2 files changed

+20
-118
lines changed

src/features/twitter/services/authorize-twitter-service.test.ts

Lines changed: 19 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,17 @@ import type { TokenRepository } from '@/features/account/repositories/token-repo
66
import type { Logger } from '@/shared/infra/logger/logger';
77
import { loggerMock } from '@/shared/test-helpers/mocks/logger.mock';
88

9-
import type { TwitterTokenResponse } from '../models/twitter-models';
109
import { AuthorizeTwitterService } from './authorize-twitter-service';
1110
import type { TwitterService } from './twitter-service';
1211

1312
describe('[Service] Authorize Twitter', () => {
1413
let sut: AuthorizeTwitterService;
15-
let mockLogger: Logger;
16-
let mockTwitterService: TwitterService;
17-
let mockAccountRepository: AccountRepository;
18-
let mockTokenRepository: TokenRepository;
19-
const fakeAccount = {
20-
avatarUrl: faker.image.avatar(),
21-
createdAt: faker.date.past(),
22-
favorite: faker.datatype.boolean(),
23-
id: faker.string.uuid(),
24-
name: faker.person.firstName(),
25-
socialMediaId: faker.number.int(),
26-
socialMediaUserId: faker.string.uuid(),
27-
updatedAt: faker.date.recent(),
28-
userId: faker.string.uuid(),
29-
username: faker.internet.userName(),
30-
};
14+
const mockLogger = mock<Logger>(loggerMock);
15+
const mockTwitterService = mock<TwitterService>();
16+
const mockAccountRepository = mock<AccountRepository>();
17+
const mockTokenRepository = mock<TokenRepository>();
3118

3219
beforeEach(() => {
33-
mockLogger = mock<Logger>(loggerMock);
34-
35-
mockTwitterService = mock<TwitterService>({
36-
getTwitterOAuthToken: vi.fn(),
37-
getTwitterUser: vi.fn(),
38-
});
39-
40-
mockAccountRepository = mock({
41-
create: vi.fn(),
42-
deleteAccountsBySocialMediaId: vi.fn(),
43-
findAccountsByUserId: vi.fn(),
44-
getAccountBySocialMedia: vi.fn(),
45-
getAccounts: vi.fn(),
46-
});
47-
48-
mockTokenRepository = mock({
49-
upsert: vi.fn(),
50-
});
51-
5220
sut = new AuthorizeTwitterService(
5321
mockLogger,
5422
mockTwitterService,
@@ -61,100 +29,35 @@ describe('[Service] Authorize Twitter', () => {
6129
expect(sut).toBeDefined();
6230
});
6331

64-
it('success with account', async () => {
32+
it('success', async () => {
6533
const spyLogger = vi.spyOn(mockLogger, 'info');
6634

67-
vi.spyOn(mockTwitterService, 'getTwitterOAuthToken').mockResolvedValueOnce({
35+
mockTwitterService.getTwitterOAuthToken.mockResolvedValueOnce({
6836
access_token: 'access_token',
6937
expires_in: 7200,
7038
scope: '123',
7139
token_type: 'bearer',
7240
});
7341

74-
vi.spyOn(mockTwitterService, 'getTwitterUser').mockResolvedValueOnce({
42+
mockTwitterService.getTwitterUser.mockResolvedValueOnce({
7543
id: '123',
7644
name: 'name',
7745
username: 'username',
7846
});
7947

80-
vi.spyOn(
81-
mockAccountRepository,
82-
'getAccountBySocialMedia'
83-
).mockResolvedValueOnce(fakeAccount);
84-
85-
const input = {
86-
code: '123',
87-
state: '123',
88-
};
89-
90-
await sut.execute(input);
91-
92-
expect(spyLogger).toHaveBeenCalledWith(
93-
'Inicialize authorize twitter service'
94-
);
95-
expect(mockTwitterService.getTwitterOAuthToken).toHaveBeenCalledWith(
96-
input.code
97-
);
98-
expect(mockTwitterService.getTwitterUser).toHaveBeenCalledWith(
99-
'access_token'
100-
);
101-
expect(mockAccountRepository.getAccountBySocialMedia).toHaveBeenCalled();
102-
expect(mockAccountRepository.create).not.toHaveBeenCalled();
103-
expect(mockTokenRepository.upsert).toHaveBeenCalled();
104-
});
105-
106-
it('should throw an error if twitterOAuthToken is not returned', async () => {
107-
const spyLogger = vi.spyOn(mockLogger, 'info');
108-
109-
vi.spyOn(mockTwitterService, 'getTwitterOAuthToken').mockResolvedValueOnce(
110-
null as unknown as TwitterTokenResponse
111-
);
112-
113-
const input = {
114-
code: '123',
115-
state: '123',
116-
};
117-
118-
await expect(sut.execute(input)).rejects.toThrowError('Erro');
119-
120-
expect(spyLogger).toHaveBeenCalledWith(
121-
'Inicialize authorize twitter service'
122-
);
123-
124-
expect(mockTwitterService.getTwitterOAuthToken).toHaveBeenCalledWith(
125-
input.code
126-
);
127-
expect(mockTwitterService.getTwitterUser).not.toHaveBeenCalled();
128-
expect(
129-
mockAccountRepository.getAccountBySocialMedia
130-
).not.toHaveBeenCalled();
131-
});
132-
133-
it('creates account if it does not exist', async () => {
134-
const spyLogger = vi.spyOn(mockLogger, 'info');
135-
136-
vi.spyOn(mockTwitterService, 'getTwitterOAuthToken').mockResolvedValueOnce({
137-
access_token: 'access_token',
138-
expires_in: 7200,
139-
scope: '123',
140-
token_type: 'bearer',
141-
});
142-
143-
vi.spyOn(mockTwitterService, 'getTwitterUser').mockResolvedValueOnce({
144-
id: '123',
145-
name: 'name',
146-
username: 'username',
48+
mockAccountRepository.getAccountBySocialMedia.mockResolvedValueOnce({
49+
avatarUrl: faker.image.avatar(),
50+
createdAt: faker.date.past(),
51+
favorite: faker.datatype.boolean(),
52+
id: faker.string.uuid(),
53+
name: faker.person.firstName(),
54+
socialMediaId: faker.number.int(),
55+
socialMediaUserId: faker.string.uuid(),
56+
updatedAt: faker.date.recent(),
57+
userId: faker.string.uuid(),
58+
username: faker.internet.userName(),
14759
});
14860

149-
vi.spyOn(
150-
mockAccountRepository,
151-
'getAccountBySocialMedia'
152-
).mockResolvedValueOnce(null);
153-
154-
vi.spyOn(mockAccountRepository, 'create').mockResolvedValueOnce(
155-
fakeAccount
156-
);
157-
15861
const input = {
15962
code: '123',
16063
state: '123',
@@ -172,7 +75,6 @@ describe('[Service] Authorize Twitter', () => {
17275
'access_token'
17376
);
17477
expect(mockAccountRepository.getAccountBySocialMedia).toHaveBeenCalled();
175-
expect(mockAccountRepository.create).toHaveBeenCalled();
176-
expect(mockTokenRepository.upsert).toHaveBeenCalled();
78+
expect(mockAccountRepository.create).not.toHaveBeenCalled();
17779
});
17880
});

src/features/twitter/services/twitter-service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class TwitterService {
6565
url: '/2/users/me',
6666
});
6767

68-
return data.data;
68+
return data.data ?? null;
6969
} catch (err) {
7070
this.logger.error(`Error on getTwitterUser in twitter service -${err}`);
7171
throw err;

0 commit comments

Comments
 (0)