Skip to content

Commit ec0a130

Browse files
committed
- refactor review test code
1 parent 4649784 commit ec0a130

File tree

1 file changed

+55
-137
lines changed

1 file changed

+55
-137
lines changed

src/tests/test_review_router.py

+55-137
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,47 @@
1111

1212

1313
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+
1435
async def asyncTearDown(self) -> None:
1536
remove_test_files()
1637
await super().asyncTearDown()
1738

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}
3442
)
3543

44+
async def test_create_review(self) -> None:
45+
# given
3646
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
3747
# 유저 로그인
38-
await client.post("/users/login", json={"username": username, "password": password})
48+
await self._test_user_login(client=client)
3949

4050
# when
4151
response = await client.post(
4252
"/reviews",
4353
data={
44-
"movie_id": movie.id,
54+
"movie_id": self.movies[0].id,
4555
"title": (review_title := "test review"),
4656
"content": (review_content := "test review content"),
4757
},
@@ -50,39 +60,23 @@ async def test_create_review(self) -> None:
5060

5161
assert response.status_code == status.HTTP_201_CREATED
5262
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
5565
assert response_json["title"] == review_title
5666
assert response_json["content"] == review_content
5767
assert f"reviews/images/{review_image.rsplit(".")[0]}" in response_json["review_image_url"]
5868
assert review_image.rsplit(".")[1] in response_json["review_image_url"]
5969

6070
async def test_get_review(self) -> None:
6171
# 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-
7872
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
7973
# 유저 로그인
80-
await client.post("/users/login", json={"username": username, "password": password})
74+
await self._test_user_login(client=client)
8175

8276
create_response = await client.post(
8377
"/reviews",
8478
data={
85-
"movie_id": movie.id,
79+
"movie_id": self.movies[0].id,
8680
"title": (review_title := "test review"),
8781
"content": (review_content := "test review content"),
8882
},
@@ -95,54 +89,33 @@ async def test_get_review(self) -> None:
9589

9690
assert response.status_code == status.HTTP_200_OK
9791
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
10094
assert response_json["title"] == review_title
10195
assert response_json["content"] == review_content
10296
assert f"reviews/images/{review_image.rsplit(".")[0]}" in response_json["review_image_url"]
10397
assert review_image.rsplit(".")[1] in response_json["review_image_url"]
10498

10599
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-
113100
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
114101
# 유저 로그인
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+
)
116105
response = await client.get("/reviews/378912739121")
117106

118107
assert response.status_code == status.HTTP_404_NOT_FOUND
119108

120109
async def test_update_review(self) -> None:
121110
# 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-
138111
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
139112
# 유저 로그인
140-
await client.post("/users/login", json={"username": username, "password": password})
113+
await self._test_user_login(client=client)
141114

142115
create_response = await client.post(
143116
"/reviews",
144117
data={
145-
"movie_id": movie.id,
118+
"movie_id": self.movies[0].id,
146119
"title": "test review",
147120
"content": "test review content",
148121
},
@@ -164,54 +137,32 @@ async def test_update_review(self) -> None:
164137
assert update_response.status_code == status.HTTP_200_OK
165138
response_json = update_response.json()
166139
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
169142
assert response_json["title"] == updated_title
170143
assert response_json["content"] == updated_content
171144
assert f"reviews/images/{updated_image.rsplit(".")[0]}" in response_json["review_image_url"]
172145
assert updated_image.rsplit(".")[1] in response_json["review_image_url"]
173146

174147
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-
182148
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
183149
# 유저 로그인
184-
await client.post("/users/login", json={"username": username, "password": password})
150+
await self._test_user_login(client=client)
151+
185152
response = await client.patch("/reviews/378912739121", data={"update_title": "updated title"})
186153

187154
assert response.status_code == status.HTTP_404_NOT_FOUND
188155

189156
async def test_delete_review(self) -> None:
190157
# 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-
207158
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
208159
# 유저 로그인
209-
await client.post("/users/login", json={"username": username, "password": password})
160+
await self._test_user_login(client=client)
210161

211162
create_response = await client.post(
212163
"/reviews",
213164
data={
214-
"movie_id": movie.id,
165+
"movie_id": self.movies[0].id,
215166
"title": "test review",
216167
"content": "test review content",
217168
},
@@ -226,31 +177,16 @@ async def test_delete_review(self) -> None:
226177
assert delete_response.status_code == status.HTTP_204_NO_CONTENT
227178

228179
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-
236180
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
237181
# 유저 로그인
238-
await client.post("/users/login", json={"username": username, "password": password})
182+
await self._test_user_login(client=client)
183+
239184
response = await client.delete("/reviews/378912739121")
240185

241186
assert response.status_code == status.HTTP_404_NOT_FOUND
242187

243188
async def test_get_movie_reviews(self) -> None:
244189
# 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-
254190
users = [
255191
await User.create(
256192
username=f"testuser{i}",
@@ -270,7 +206,7 @@ async def test_get_movie_reviews(self) -> None:
270206
create_reponse = await client.post(
271207
"/reviews",
272208
data={
273-
"movie_id": movie.id,
209+
"movie_id": self.movies[0].id,
274210
"title": f"test review {i}",
275211
"content": f"test review content {i}",
276212
},
@@ -279,43 +215,25 @@ async def test_get_movie_reviews(self) -> None:
279215
reviews.append(create_reponse.json())
280216

281217
# when
282-
response = await client.get(f"/movies/{movie.id}/reviews")
218+
response = await client.get(f"/movies/{self.movies[0].id}/reviews")
283219

284220
assert response.status_code == status.HTTP_200_OK
285221
response_json = response.json()
286222
for i, review in enumerate(response_json):
287-
assert review["movie_id"] == movie.id
223+
assert review["movie_id"] == self.movies[0].id
288224
assert review["user_id"] == users[i].id
289225
assert review["title"] == reviews[i]["title"]
290226
assert review["content"] == reviews[i]["content"]
291227
assert reviews[i]["review_image_url"] == review["review_image_url"]
292228

293229
async def test_get_my_reviews(self) -> None:
294230
# 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-
313231
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app), base_url="http://test") as client:
314232
# 유저 로그인
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)
318234

235+
reviews = []
236+
for i, movie in enumerate(self.movies):
319237
create_reponse = await client.post(
320238
"/reviews",
321239
data={
@@ -333,8 +251,8 @@ async def test_get_my_reviews(self) -> None:
333251
assert response.status_code == status.HTTP_200_OK
334252
response_json = response.json()
335253
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
338256
assert review["title"] == reviews[i]["title"]
339257
assert review["content"] == reviews[i]["content"]
340258
assert review["review_image_url"] == reviews[i]["review_image_url"]

0 commit comments

Comments
 (0)