Skip to content

Commit

Permalink
Merge pull request #129 from BETTER-iTER/feature/128
Browse files Browse the repository at this point in the history
[Feature-128] AWS S3 구축  및 리뷰 삭제 API 구현
  • Loading branch information
choidongkuen authored Dec 27, 2023
2 parents 2bea44c + 964bd70 commit f3925e6
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,15 @@ public ResponseDto<Void> reviewScrap(
return ResponseDto.onSuccess(null);
}

/* 리뷰 삭제 */
@DeleteMapping("/{reviewId}")
public ResponseDto<Void> deleteReview(
@PathVariable Long reviewId
) {
this.reviewService.deleteReview(reviewId);
return ResponseDto.onSuccess(null);
}


private void checkRequestValidation(BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static com.example.betteriter.global.common.code.status.ErrorStatus._REVIEW_IMAGE_NOT_FOUND;
import static com.example.betteriter.global.common.code.status.ErrorStatus._REVIEW_NOT_FOUND;
import static com.example.betteriter.global.common.code.status.ErrorStatus.*;

@Slf4j
@RequiredArgsConstructor
Expand Down Expand Up @@ -185,6 +184,17 @@ public void reviewScrap(Long reviewId) {
review.countReviewScrapedCount();
}

/* 리뷰 삭제 */
@Transactional
public Void deleteReview(Long reviewId) {
Review review = this.findReviewById(reviewId);
if (!review.getWriter().getId().equals(this.getCurrentUser().getId())) {
throw new ReviewHandler(_REVIEW_WRITER_IS_NOT_MATCH);
}
this.reviewRepository.delete(review);
return null;
}

private Slice<Review> getReviews(String name, String sort, int page) {
Slice<Review> reviews = null;
Pageable pageable = PageRequest.of(page, SIZE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public enum ErrorStatus implements BaseErrorCode {
_REVIEW_NOT_FOUND(HttpStatus.BAD_REQUEST, "REVIEW_NOT_FOUND_400", "일치하는 리뷰 정보를 찾을 수 없습니다."),
_REVIEW_NOT_ACTIVATE(HttpStatus.BAD_REQUEST, "REVIEW_NOT_ACTIVATE_400", "삭제되었거나 비공개된 리뷰입니다."),
_REVIEW_IMAGE_NOT_FOUND(HttpStatus.BAD_REQUEST, "REVIEW_IMAGE_NOT_FOUND_400", "일치하는 리뷰 이미지 정보를 찾을 수 없습니다."),
_REVIEW_WRITER_IS_NOT_MATCH(HttpStatus.BAD_REQUEST, "REVIEW_WRITER_IS_NOT_MATCH_400", "리뷰의 작성자가 아닙니다."),

// News
_NEWS_NOT_FOUND(HttpStatus.BAD_REQUEST, "NEWS_400", "일치하는 뉴스 정보를 찾을 수 없습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import com.example.betteriter.fo_domain.review.domain.ReviewImage;
import com.example.betteriter.fo_domain.review.dto.*;
import com.example.betteriter.fo_domain.review.dto.CreateReviewRequestDto.CreateReviewImageRequestDto;
import com.example.betteriter.fo_domain.review.exception.ReviewHandler;
import com.example.betteriter.fo_domain.review.service.ReviewService;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.fo_domain.user.domain.UsersDetail;
import com.example.betteriter.global.common.code.status.ErrorStatus;
import com.example.betteriter.global.config.security.SecurityConfig;
import com.example.betteriter.global.constant.Category;
import com.example.betteriter.global.constant.Job;
Expand Down Expand Up @@ -39,8 +41,7 @@
import static org.mockito.Mockito.verify;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
Expand Down Expand Up @@ -786,4 +787,33 @@ void getReviewDetailCommentsControllerTest() throws Exception {
.andExpect(jsonPath("$.result[0].id").value(1))
.andExpect(jsonPath("$.result[0].reviewCommentUserInfo.userId").value(1));
}

@Test
@DisplayName("리뷰을 삭제한다 - 일치하는 리뷰가 존재하지 않는다.")
void deleteReviewControllerTestInFail() throws Exception {
// given
Review review = createReview(1L);

given(this.reviewService.deleteReview(anyLong()))
.willThrow(new ReviewHandler(ErrorStatus._REVIEW_NOT_FOUND));
// when & then
mockMvc.perform(delete("/review/{reviewId}", 1L).with(csrf()))
.andDo(print())
.andExpect(status().isBadRequest())
.andExpect(jsonPath("$.isSuccess").value(false))
.andExpect(jsonPath("$.code").value("REVIEW_NOT_FOUND_400"));
}

@Test
@DisplayName("리뷰를 삭제한다 - 성공")
void deleteReviewControllerTestInSuccess() throws Exception {
// given
Review review = createReview(1L);
// when

// then
mockMvc.perform(delete("/review/{reviewId}", 1L).with(csrf()))
.andDo(print())
.andExpect(status().isOk());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ void getReviewDetailLike() {

@Test
@DisplayName("리뷰 상세 조회 댓글 조회를 한다.")
void test() {
void getReviewDetailCommentsServiceTest() {
// given
Review review = createReview(1L);

Expand All @@ -526,4 +526,20 @@ void test() {
System.out.println(reviewCommentResponse.isMine());
}
}

@Test
@DisplayName("")
void deleteReviewServiceTest() {
// given
Review review = createReview(1L);

given(this.reviewRepository.findById(anyLong()))
.willReturn(Optional.of(review));

// when
this.reviewService.deleteReview(1L);
// then
verify(this.reviewRepository, times(1)).findById(anyLong());
verify(this.reviewRepository, times(1)).delete(any(Review.class));
}
}

0 comments on commit f3925e6

Please sign in to comment.