@@ -6,49 +6,17 @@ import type { TokenRepository } from '@/features/account/repositories/token-repo
6
6
import type { Logger } from '@/shared/infra/logger/logger' ;
7
7
import { loggerMock } from '@/shared/test-helpers/mocks/logger.mock' ;
8
8
9
- import type { TwitterTokenResponse } from '../models/twitter-models' ;
10
9
import { AuthorizeTwitterService } from './authorize-twitter-service' ;
11
10
import type { TwitterService } from './twitter-service' ;
12
11
13
12
describe ( '[Service] Authorize Twitter' , ( ) => {
14
13
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 > ( ) ;
31
18
32
19
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
-
52
20
sut = new AuthorizeTwitterService (
53
21
mockLogger ,
54
22
mockTwitterService ,
@@ -61,100 +29,35 @@ describe('[Service] Authorize Twitter', () => {
61
29
expect ( sut ) . toBeDefined ( ) ;
62
30
} ) ;
63
31
64
- it ( 'success with account ' , async ( ) => {
32
+ it ( 'success' , async ( ) => {
65
33
const spyLogger = vi . spyOn ( mockLogger , 'info' ) ;
66
34
67
- vi . spyOn ( mockTwitterService , ' getTwitterOAuthToken' ) . mockResolvedValueOnce ( {
35
+ mockTwitterService . getTwitterOAuthToken . mockResolvedValueOnce ( {
68
36
access_token : 'access_token' ,
69
37
expires_in : 7200 ,
70
38
scope : '123' ,
71
39
token_type : 'bearer' ,
72
40
} ) ;
73
41
74
- vi . spyOn ( mockTwitterService , ' getTwitterUser' ) . mockResolvedValueOnce ( {
42
+ mockTwitterService . getTwitterUser . mockResolvedValueOnce ( {
75
43
id : '123' ,
76
44
name : 'name' ,
77
45
username : 'username' ,
78
46
} ) ;
79
47
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 ( ) ,
147
59
} ) ;
148
60
149
- vi . spyOn (
150
- mockAccountRepository ,
151
- 'getAccountBySocialMedia'
152
- ) . mockResolvedValueOnce ( null ) ;
153
-
154
- vi . spyOn ( mockAccountRepository , 'create' ) . mockResolvedValueOnce (
155
- fakeAccount
156
- ) ;
157
-
158
61
const input = {
159
62
code : '123' ,
160
63
state : '123' ,
@@ -172,7 +75,6 @@ describe('[Service] Authorize Twitter', () => {
172
75
'access_token'
173
76
) ;
174
77
expect ( mockAccountRepository . getAccountBySocialMedia ) . toHaveBeenCalled ( ) ;
175
- expect ( mockAccountRepository . create ) . toHaveBeenCalled ( ) ;
176
- expect ( mockTokenRepository . upsert ) . toHaveBeenCalled ( ) ;
78
+ expect ( mockAccountRepository . create ) . not . toHaveBeenCalled ( ) ;
177
79
} ) ;
178
80
} ) ;
0 commit comments