1818import static com .epages .restdocs .apispec .ResourceDocumentation .resource ;
1919import static org .mockito .ArgumentMatchers .*;
2020import static org .mockito .BDDMockito .given ;
21+ import static org .mockito .Mockito .doNothing ;
2122import static org .springframework .restdocs .mockmvc .MockMvcRestDocumentation .document ;
2223import static org .springframework .restdocs .mockmvc .RestDocumentationRequestBuilders .get ;
24+ import static org .springframework .restdocs .mockmvc .RestDocumentationRequestBuilders .delete ;
2325import static org .springframework .restdocs .payload .PayloadDocumentation .fieldWithPath ;
2426import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .status ;
2527
@@ -322,4 +324,44 @@ void getAllRunningRecordsTest() throws Exception {
322324 )
323325 ));
324326 }
327+
328+ @ Test
329+ void deleteRecordTest () throws Exception {
330+ // given
331+ doNothing ().when (recordService ).deleteRecord (anyLong (), anyLong ());
332+ given (jwtUtil .getMemberIdFromToken (anyString ())).willReturn (1L );
333+ given (jwtUtil .getSocialIdFromToken (anyString ())).willReturn ("kakao_123" );
334+
335+ UserDetailsImpl mockUserDetails = UserDetailsImpl .builder ()
336+ .memberId (1L )
337+ .socialId ("kakao_123" )
338+ .roles (List .of (MemberRole .USER ))
339+ .build ();
340+ given (userDetailsService .loadUserByUsername ("1" )).willReturn (mockUserDetails );
341+
342+ // when
343+ this .mockMvc .perform (delete ("/api/records/{recordId}" , 1L )
344+ .header (AUTH_HEADER , TEST_ACCESS_TOKEN ))
345+ .andExpect (status ().isOk ())
346+ .andDo (document ("record-delete" ,
347+ resource (
348+ ResourceSnippetParameters .builder ()
349+ .tag ("records" )
350+ .summary ("러닝 기록 삭제" )
351+ .description ("본인의 러닝 기록을 삭제합니다." )
352+ .requestHeaders (
353+ headerWithName ("Authorization" ).description ("엑세스 토큰" )
354+ )
355+ .pathParameters (
356+ parameterWithName ("recordId" ).description ("삭제할 러닝 기록 ID" )
357+ )
358+ .responseFields (
359+ fieldWithPath ("status.statusCode" ).type (JsonFieldType .STRING ).description ("상태 코드" ),
360+ fieldWithPath ("status.message" ).type (JsonFieldType .STRING ).description ("상태 메시지" ),
361+ fieldWithPath ("status.description" ).type (JsonFieldType .STRING ).description ("상태 설명" ).optional ()
362+ )
363+ .build ()
364+ )
365+ ));
366+ }
325367}
0 commit comments