11package com .somemore .domains .review .controller ;
22
33import static org .mockito .ArgumentMatchers .any ;
4- import static org .mockito .ArgumentMatchers .anyString ;
54import static org .mockito .BDDMockito .given ;
65import static org .mockito .BDDMockito .willDoNothing ;
76import static org .springframework .http .MediaType .APPLICATION_JSON ;
8- import static org .springframework .http .MediaType .MULTIPART_FORM_DATA ;
97import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .delete ;
10- import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .multipart ;
8+ import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .post ;
119import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .put ;
1210import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .jsonPath ;
1311import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .status ;
1412
15- import com .fasterxml .jackson .core .JsonProcessingException ;
1613import com .somemore .domains .review .dto .request .ReviewCreateRequestDto ;
1714import com .somemore .domains .review .dto .request .ReviewUpdateRequestDto ;
1815import com .somemore .domains .review .usecase .CreateReviewUseCase ;
1916import com .somemore .domains .review .usecase .DeleteReviewUseCase ;
2017import com .somemore .domains .review .usecase .UpdateReviewUseCase ;
21- import com .somemore .global .imageupload .usecase .ImageUploadUseCase ;
2218import com .somemore .support .ControllerTestSupport ;
2319import com .somemore .support .annotation .MockUser ;
2420import java .util .UUID ;
2521import org .junit .jupiter .api .DisplayName ;
2622import org .junit .jupiter .api .Test ;
2723import org .springframework .boot .test .mock .mockito .MockBean ;
28- import org .springframework .http .MediaType ;
29- import org .springframework .mock .web .MockMultipartFile ;
30- import org .springframework .test .web .servlet .request .MockMultipartHttpServletRequestBuilder ;
3124
3225class ReviewCommandApiControllerTest extends ControllerTestSupport {
3326
34- @ MockBean
35- private ImageUploadUseCase imageUploadUseCase ;
36-
3727 @ MockBean
3828 private CreateReviewUseCase createReviewUseCase ;
3929
@@ -54,27 +44,17 @@ void createReview() throws Exception {
5444 .content ("리뷰 내용" )
5545 .build ();
5646
57- MockMultipartFile imageFile = new MockMultipartFile (
58- "img_file" ,
59- "test-image.jpg" ,
60- MediaType .IMAGE_JPEG_VALUE ,
61- "test image content" .getBytes ()
62- );
47+ String requestData = objectMapper .writeValueAsString (requestDto );
6348
64- MockMultipartFile requestData = getRequestData (requestDto );
65-
66- String imgUrl = "https://example.com/image/test-image.jpg" ;
6749 Long reviewId = 1L ;
6850
69- given (imageUploadUseCase .uploadImage (any ())).willReturn (imgUrl );
70- given (createReviewUseCase .createReview (any (), any (UUID .class ),
71- anyString ())).willReturn (reviewId );
51+ given (createReviewUseCase .createReview (any (), any (UUID .class )))
52+ .willReturn (reviewId );
7253
7354 // when
74- mockMvc .perform (multipart ("/api/review" )
75- .file (requestData )
76- .file (imageFile )
77- .contentType (MULTIPART_FORM_DATA )
55+ mockMvc .perform (post ("/api/review" )
56+ .content (requestData )
57+ .contentType (APPLICATION_JSON )
7858 .header ("Authorization" , "Bearer access-token" ))
7959 // then
8060 .andExpect (status ().isOk ())
@@ -93,14 +73,12 @@ void createReviewValidateTestRecruitBoardId() throws Exception {
9373 .content ("리뷰 내용" )
9474 .build ();
9575
96- MockMultipartFile requestData = getRequestData (requestDto );
97-
98- given (imageUploadUseCase .uploadImage (any ())).willReturn ("" );
76+ String requestData = objectMapper .writeValueAsString (requestDto );
9977
10078 // when
101- mockMvc .perform (multipart ("/api/review" )
102- .file (requestData )
103- .contentType (MULTIPART_FORM_DATA )
79+ mockMvc .perform (post ("/api/review" )
80+ .content (requestData )
81+ .contentType (APPLICATION_JSON )
10482 .header ("Authorization" , "Bearer access-token" ))
10583 // then
10684 .andExpect (status ().isBadRequest ())
@@ -119,14 +97,12 @@ void createReviewValidateTestTitle() throws Exception {
11997 .content ("리뷰 내용" )
12098 .build ();
12199
122- MockMultipartFile requestData = getRequestData (requestDto );
123-
124- given (imageUploadUseCase .uploadImage (any ())).willReturn ("" );
100+ String requestData = objectMapper .writeValueAsString (requestDto );
125101
126102 // when
127- mockMvc .perform (multipart ("/api/review" )
128- .file (requestData )
129- .contentType (MULTIPART_FORM_DATA )
103+ mockMvc .perform (post ("/api/review" )
104+ .content (requestData )
105+ .contentType (APPLICATION_JSON )
130106 .header ("Authorization" , "Bearer access-token" ))
131107 // then
132108 .andExpect (status ().isBadRequest ())
@@ -145,14 +121,12 @@ void createReviewValidateTestContent() throws Exception {
145121 .title ("리뷰 제목" )
146122 .build ();
147123
148- MockMultipartFile requestData = getRequestData (requestDto );
149-
150- given (imageUploadUseCase .uploadImage (any ())).willReturn ("" );
124+ String requestData = objectMapper .writeValueAsString (requestDto );
151125
152126 // when
153- mockMvc .perform (multipart ("/api/review" )
154- .file (requestData )
155- .contentType (MULTIPART_FORM_DATA )
127+ mockMvc .perform (post ("/api/review" )
128+ .content (requestData )
129+ .contentType (APPLICATION_JSON )
156130 .header ("Authorization" , "Bearer access-token" ))
157131 // then
158132 .andExpect (status ().isBadRequest ())
@@ -235,38 +209,6 @@ void updateReviewValidateContent() throws Exception {
235209 .andExpect (jsonPath ("$.detail" ).value ("리뷰 내용은 필수 값입니다." ));
236210 }
237211
238- @ DisplayName ("리뷰 이미지 수정 성공" )
239- @ Test
240- @ MockUser
241- void updateReviewImage () throws Exception {
242- // given
243- Long reviewId = 1L ;
244-
245- MockMultipartFile imageFile = new MockMultipartFile (
246- "img_file" ,
247- "test-image.jpg" ,
248- MediaType .IMAGE_JPEG_VALUE ,
249- "test image content" .getBytes ()
250- );
251-
252- String imgUrl = "https://example.com/image/test-image.jpg" ;
253-
254- given (imageUploadUseCase .uploadImage (any ())).willReturn (imgUrl );
255-
256- willDoNothing ().given (updateReviewUseCase )
257- .updateReviewImageUrl (any (), any (UUID .class ), anyString ());
258-
259- // when
260- mockMvc .perform (createMultipartPutRequest ("/api/review/{id}" , reviewId )
261- .file (imageFile )
262- .contentType (MULTIPART_FORM_DATA )
263- .header ("Authorization" , "Bearer access-token" ))
264- // then
265- .andExpect (status ().isOk ())
266- .andExpect (jsonPath ("$.code" ).value (200 ))
267- .andExpect (jsonPath ("$.message" ).value ("리뷰 이미지 수정 성공" ));
268- }
269-
270212 @ DisplayName ("리뷰 삭제 성공 테스트" )
271213 @ Test
272214 @ MockUser
@@ -286,23 +228,4 @@ void deleteReview() throws Exception {
286228 .andExpect (jsonPath ("$.message" ).value ("리뷰 삭제 성공" ));
287229 }
288230
289- private MockMultipartFile getRequestData (ReviewCreateRequestDto requestDto )
290- throws JsonProcessingException {
291- return new MockMultipartFile (
292- "data" ,
293- "" ,
294- MediaType .APPLICATION_JSON_VALUE ,
295- objectMapper .writeValueAsBytes (requestDto )
296- );
297- }
298-
299- private MockMultipartHttpServletRequestBuilder createMultipartPutRequest (String url , Long id ) {
300- MockMultipartHttpServletRequestBuilder builder = multipart (url , id );
301- builder .with (request -> {
302- request .setMethod ("PUT" );
303- return request ;
304- });
305- return builder ;
306- }
307-
308231}
0 commit comments