11
11
12
12
13
13
class TestReviewRouter (TestCase ):
14
+ async def asyncSetUp (self ) -> None :
15
+ await super ().asyncSetUp ()
16
+ self .movies = [
17
+ await Movie .create (
18
+ title = f"test{ i } " ,
19
+ overview = "test 중 입니다." ,
20
+ cast = "lee byeong heon, choi min sik" ,
21
+ runtime = 240 ,
22
+ genre_ids = [1 , 2 ],
23
+ release_date = "2021-02-01" ,
24
+ )
25
+ for i in range (1 , 4 )
26
+ ]
27
+ self .user = await User .create (
28
+ username = "testuser" ,
29
+ hashed_password = AuthService ().hash_password ((plain_password := "password1234" )),
30
+ age = 25 ,
31
+ gender = GenderEnum .MALE ,
32
+ )
33
+ self .user_plain_password = plain_password
34
+
14
35
async def asyncTearDown (self ) -> None :
15
36
remove_test_files ()
16
37
await super ().asyncTearDown ()
17
38
18
- async def test_create_review (self ) -> None :
19
- # given
20
- movie = await Movie .create (
21
- title = "test" ,
22
- overview = "test 중 입니다." ,
23
- cast = "lee byeong heon, choi min sik" ,
24
- runtime = 240 ,
25
- genre_ids = [1 , 2 ],
26
- release_date = "2021-02-01" ,
27
- )
28
-
29
- user = await User .create (
30
- username = (username := "test" ),
31
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
32
- age = 25 ,
33
- gender = GenderEnum .MALE ,
39
+ async def _test_user_login (self , client : httpx .AsyncClient ) -> None :
40
+ await client .post (
41
+ url = "/users/login" , json = {"username" : self .user .username , "password" : self .user_plain_password }
34
42
)
35
43
44
+ async def test_create_review (self ) -> None :
45
+ # given
36
46
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
37
47
# 유저 로그인
38
- await client . post ( "/users/login" , json = { "username" : username , "password" : password } )
48
+ await self . _test_user_login ( client = client )
39
49
40
50
# when
41
51
response = await client .post (
42
52
"/reviews" ,
43
53
data = {
44
- "movie_id" : movie .id ,
54
+ "movie_id" : self . movies [ 0 ] .id ,
45
55
"title" : (review_title := "test review" ),
46
56
"content" : (review_content := "test review content" ),
47
57
},
@@ -50,39 +60,23 @@ async def test_create_review(self) -> None:
50
60
51
61
assert response .status_code == status .HTTP_201_CREATED
52
62
response_json = response .json ()
53
- assert response_json ["user_id" ] == user .id
54
- assert response_json ["movie_id" ] == movie .id
63
+ assert response_json ["user_id" ] == self . user .id
64
+ assert response_json ["movie_id" ] == self . movies [ 0 ] .id
55
65
assert response_json ["title" ] == review_title
56
66
assert response_json ["content" ] == review_content
57
67
assert f"reviews/images/{ review_image .rsplit ("." )[0 ]} " in response_json ["review_image_url" ]
58
68
assert review_image .rsplit ("." )[1 ] in response_json ["review_image_url" ]
59
69
60
70
async def test_get_review (self ) -> None :
61
71
# given
62
- movie = await Movie .create (
63
- title = "test" ,
64
- overview = "test 중 입니다." ,
65
- cast = "lee byeong heon, choi min sik" ,
66
- runtime = 240 ,
67
- genre_ids = [1 , 2 ],
68
- release_date = "2021-02-01" ,
69
- )
70
-
71
- user = await User .create (
72
- username = (username := "test" ),
73
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
74
- age = 25 ,
75
- gender = GenderEnum .MALE ,
76
- )
77
-
78
72
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
79
73
# 유저 로그인
80
- await client . post ( "/users/login" , json = { "username" : username , "password" : password } )
74
+ await self . _test_user_login ( client = client )
81
75
82
76
create_response = await client .post (
83
77
"/reviews" ,
84
78
data = {
85
- "movie_id" : movie .id ,
79
+ "movie_id" : self . movies [ 0 ] .id ,
86
80
"title" : (review_title := "test review" ),
87
81
"content" : (review_content := "test review content" ),
88
82
},
@@ -95,54 +89,33 @@ async def test_get_review(self) -> None:
95
89
96
90
assert response .status_code == status .HTTP_200_OK
97
91
response_json = response .json ()
98
- assert response_json ["movie_id" ] == movie .id
99
- assert response_json ["user_id" ] == user .id
92
+ assert response_json ["movie_id" ] == self . movies [ 0 ] .id
93
+ assert response_json ["user_id" ] == self . user .id
100
94
assert response_json ["title" ] == review_title
101
95
assert response_json ["content" ] == review_content
102
96
assert f"reviews/images/{ review_image .rsplit ("." )[0 ]} " in response_json ["review_image_url" ]
103
97
assert review_image .rsplit ("." )[1 ] in response_json ["review_image_url" ]
104
98
105
99
async def test_get_review_when_review_does_not_exist (self ) -> None :
106
- await User .create (
107
- username = (username := "test" ),
108
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
109
- age = 25 ,
110
- gender = GenderEnum .MALE ,
111
- )
112
-
113
100
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
114
101
# 유저 로그인
115
- await client .post ("/users/login" , json = {"username" : username , "password" : password })
102
+ await client .post (
103
+ url = "/users/login" , json = {"username" : self .user .username , "password" : self .user_plain_password }
104
+ )
116
105
response = await client .get ("/reviews/378912739121" )
117
106
118
107
assert response .status_code == status .HTTP_404_NOT_FOUND
119
108
120
109
async def test_update_review (self ) -> None :
121
110
# given
122
- movie = await Movie .create (
123
- title = "test" ,
124
- overview = "test 중 입니다." ,
125
- cast = "lee byeong heon, choi min sik" ,
126
- runtime = 240 ,
127
- genre_ids = [1 , 2 ],
128
- release_date = "2021-02-01" ,
129
- )
130
-
131
- user = await User .create (
132
- username = (username := "test" ),
133
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
134
- age = 25 ,
135
- gender = GenderEnum .MALE ,
136
- )
137
-
138
111
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
139
112
# 유저 로그인
140
- await client . post ( "/users/login" , json = { "username" : username , "password" : password } )
113
+ await self . _test_user_login ( client = client )
141
114
142
115
create_response = await client .post (
143
116
"/reviews" ,
144
117
data = {
145
- "movie_id" : movie .id ,
118
+ "movie_id" : self . movies [ 0 ] .id ,
146
119
"title" : "test review" ,
147
120
"content" : "test review content" ,
148
121
},
@@ -164,54 +137,32 @@ async def test_update_review(self) -> None:
164
137
assert update_response .status_code == status .HTTP_200_OK
165
138
response_json = update_response .json ()
166
139
assert response_json ["id" ] == review_id
167
- assert response_json ["user_id" ] == user .id
168
- assert response_json ["movie_id" ] == movie .id
140
+ assert response_json ["user_id" ] == self . user .id
141
+ assert response_json ["movie_id" ] == self . movies [ 0 ] .id
169
142
assert response_json ["title" ] == updated_title
170
143
assert response_json ["content" ] == updated_content
171
144
assert f"reviews/images/{ updated_image .rsplit ("." )[0 ]} " in response_json ["review_image_url" ]
172
145
assert updated_image .rsplit ("." )[1 ] in response_json ["review_image_url" ]
173
146
174
147
async def test_update_review_when_review_does_not_exist (self ) -> None :
175
- await User .create (
176
- username = (username := "test" ),
177
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
178
- age = 25 ,
179
- gender = GenderEnum .MALE ,
180
- )
181
-
182
148
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
183
149
# 유저 로그인
184
- await client .post ("/users/login" , json = {"username" : username , "password" : password })
150
+ await self ._test_user_login (client = client )
151
+
185
152
response = await client .patch ("/reviews/378912739121" , data = {"update_title" : "updated title" })
186
153
187
154
assert response .status_code == status .HTTP_404_NOT_FOUND
188
155
189
156
async def test_delete_review (self ) -> None :
190
157
# given
191
- movie = await Movie .create (
192
- title = "test" ,
193
- overview = "test 중 입니다." ,
194
- cast = "lee byeong heon, choi min sik" ,
195
- runtime = 240 ,
196
- genre_ids = [1 , 2 ],
197
- release_date = "2021-02-01" ,
198
- )
199
-
200
- await User .create (
201
- username = (username := "test" ),
202
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
203
- age = 25 ,
204
- gender = GenderEnum .MALE ,
205
- )
206
-
207
158
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
208
159
# 유저 로그인
209
- await client . post ( "/users/login" , json = { "username" : username , "password" : password } )
160
+ await self . _test_user_login ( client = client )
210
161
211
162
create_response = await client .post (
212
163
"/reviews" ,
213
164
data = {
214
- "movie_id" : movie .id ,
165
+ "movie_id" : self . movies [ 0 ] .id ,
215
166
"title" : "test review" ,
216
167
"content" : "test review content" ,
217
168
},
@@ -226,31 +177,16 @@ async def test_delete_review(self) -> None:
226
177
assert delete_response .status_code == status .HTTP_204_NO_CONTENT
227
178
228
179
async def test_delete_review_when_review_does_not_exist (self ) -> None :
229
- await User .create (
230
- username = (username := "test" ),
231
- hashed_password = AuthService ().hash_password ((password := "password1234" )),
232
- age = 25 ,
233
- gender = GenderEnum .MALE ,
234
- )
235
-
236
180
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
237
181
# 유저 로그인
238
- await client .post ("/users/login" , json = {"username" : username , "password" : password })
182
+ await self ._test_user_login (client = client )
183
+
239
184
response = await client .delete ("/reviews/378912739121" )
240
185
241
186
assert response .status_code == status .HTTP_404_NOT_FOUND
242
187
243
188
async def test_get_movie_reviews (self ) -> None :
244
189
# given
245
- movie = await Movie .create (
246
- title = "test" ,
247
- overview = "test 중 입니다." ,
248
- cast = "lee byeong heon, choi min sik" ,
249
- runtime = 240 ,
250
- genre_ids = [1 , 2 ],
251
- release_date = "2021-02-01" ,
252
- )
253
-
254
190
users = [
255
191
await User .create (
256
192
username = f"testuser{ i } " ,
@@ -270,7 +206,7 @@ async def test_get_movie_reviews(self) -> None:
270
206
create_reponse = await client .post (
271
207
"/reviews" ,
272
208
data = {
273
- "movie_id" : movie .id ,
209
+ "movie_id" : self . movies [ 0 ] .id ,
274
210
"title" : f"test review { i } " ,
275
211
"content" : f"test review content { i } " ,
276
212
},
@@ -279,43 +215,25 @@ async def test_get_movie_reviews(self) -> None:
279
215
reviews .append (create_reponse .json ())
280
216
281
217
# when
282
- response = await client .get (f"/movies/{ movie .id } /reviews" )
218
+ response = await client .get (f"/movies/{ self . movies [ 0 ] .id } /reviews" )
283
219
284
220
assert response .status_code == status .HTTP_200_OK
285
221
response_json = response .json ()
286
222
for i , review in enumerate (response_json ):
287
- assert review ["movie_id" ] == movie .id
223
+ assert review ["movie_id" ] == self . movies [ 0 ] .id
288
224
assert review ["user_id" ] == users [i ].id
289
225
assert review ["title" ] == reviews [i ]["title" ]
290
226
assert review ["content" ] == reviews [i ]["content" ]
291
227
assert reviews [i ]["review_image_url" ] == review ["review_image_url" ]
292
228
293
229
async def test_get_my_reviews (self ) -> None :
294
230
# given
295
- movies = [
296
- await Movie .create (
297
- title = f"test{ i } " ,
298
- overview = "test 중 입니다." ,
299
- cast = "lee byeong heon, choi min sik" ,
300
- runtime = 240 ,
301
- genre_ids = [1 , 2 ],
302
- release_date = "2021-02-01" ,
303
- )
304
- for i in range (1 , 4 )
305
- ]
306
- user = await User .create (
307
- username = (username := "testuser" ),
308
- hashed_password = AuthService ().hash_password ((plain_password := "password1234" )),
309
- age = 25 ,
310
- gender = GenderEnum .MALE ,
311
- )
312
-
313
231
async with httpx .AsyncClient (transport = httpx .ASGITransport (app = app ), base_url = "http://test" ) as client :
314
232
# 유저 로그인
315
- reviews = []
316
- for i , movie in enumerate (movies ):
317
- await client .post ("/users/login" , json = {"username" : username , "password" : plain_password })
233
+ await self ._test_user_login (client = client )
318
234
235
+ reviews = []
236
+ for i , movie in enumerate (self .movies ):
319
237
create_reponse = await client .post (
320
238
"/reviews" ,
321
239
data = {
@@ -333,8 +251,8 @@ async def test_get_my_reviews(self) -> None:
333
251
assert response .status_code == status .HTTP_200_OK
334
252
response_json = response .json ()
335
253
for i , review in enumerate (response_json ):
336
- assert review ["movie_id" ] == movies [i ].id
337
- assert review ["user_id" ] == user .id
254
+ assert review ["movie_id" ] == self . movies [i ].id
255
+ assert review ["user_id" ] == self . user .id
338
256
assert review ["title" ] == reviews [i ]["title" ]
339
257
assert review ["content" ] == reviews [i ]["content" ]
340
258
assert review ["review_image_url" ] == reviews [i ]["review_image_url" ]
0 commit comments