diff --git a/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java b/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java index a089b011b..befd4b81f 100644 --- a/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java +++ b/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java @@ -8,7 +8,7 @@ public interface CommunityBoardRepository { CommunityBoard save(CommunityBoard communityBoard); - Optional findById(Long id); + Optional getCommunityBoardWithId(Long id); List getCommunityBoards(); List getCommunityBoardsByWriterId(UUID writerId); void deleteAllInBatch(); diff --git a/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java b/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java index 1219a55fc..20f2d3444 100644 --- a/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java +++ b/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java @@ -23,8 +23,14 @@ public CommunityBoard save(CommunityBoard communityBoard) { } @Override - public Optional findById(Long id) { - return communityBoardJpaRepository.findById(id); + public Optional getCommunityBoardWithId(Long id) { + QCommunityBoard communityBoard = QCommunityBoard.communityBoard; + + return Optional.ofNullable(queryFactory + .selectFrom(communityBoard) + .where(communityBoard.id.eq(id) + .and(communityBoard.deleted.eq(false))) + .fetchOne()); } @Override diff --git a/src/main/java/com/somemore/community/service/query/CommunityBoardQueryService.java b/src/main/java/com/somemore/community/service/query/CommunityBoardQueryService.java index 14c192423..633b15a3f 100644 --- a/src/main/java/com/somemore/community/service/query/CommunityBoardQueryService.java +++ b/src/main/java/com/somemore/community/service/query/CommunityBoardQueryService.java @@ -53,7 +53,7 @@ public List getCommunityBoardsByWriterId(UUID writ @Override public CommunityBoardGetDetailResponseDto getCommunityBoardDetail(Long id) { - CommunityBoard board = communityBoardRepository.findById(id) + CommunityBoard board = communityBoardRepository.getCommunityBoardWithId(id) .orElseThrow(() -> new BadRequestException(NOT_EXISTS_COMMUNITY_BOARD.getMessage())); return CommunityBoardGetDetailResponseDto.fromEntity(board, getWriterDetail(board.getWriterId())); diff --git a/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java b/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java index 9529439ce..482ca5464 100644 --- a/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java +++ b/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java @@ -19,9 +19,9 @@ class CommunityRepositoryTest extends IntegrationTestSupport { @Autowired private CommunityBoardRepository communityBoardRepository; - @DisplayName("커뮤니티 id로 커뮤니티 상세 정보를 조회할 수 있다. (Repository)") + @DisplayName("커뮤니티 게시글 id로 커뮤니티 상세 정보를 조회할 수 있다. (Repository)") @Test - void findById() { + void getCommunityBoardById() { //given CommunityBoard communityBoard = CommunityBoard.builder() .title("테스트 커뮤니티 게시글 제목") @@ -33,7 +33,7 @@ void findById() { communityBoardRepository.save(communityBoard); //when - Optional foundCommunityBoard = communityBoardRepository.findById(communityBoard.getId()); + Optional foundCommunityBoard = communityBoardRepository.getCommunityBoardWithId(communityBoard.getId()); //then assertThat(foundCommunityBoard).isNotNull(); @@ -43,6 +43,27 @@ void findById() { assertThat(foundCommunityBoard.get().getWriterId()).isEqualTo(communityBoard.getWriterId()); } + @DisplayName("삭제된 커뮤니티 id로 커뮤니티 상세 정보를 조회할 때 예외를 반환할 수 있다. (Repository)") + @Test + void getCommunityBoardByDeletedId() { + //given + CommunityBoard communityBoard = CommunityBoard.builder() + .title("테스트 커뮤니티 게시글 제목") + .content("테스트 커뮤니티 게시글 내용") + .imgUrl("http://community.example.com/123") + .writerId(UUID.randomUUID()) + .build(); + + communityBoardRepository.save(communityBoard); + communityBoardRepository.deleteAllInBatch(); + + //when + Optional foundCommunityBoard = communityBoardRepository.getCommunityBoardWithId(communityBoard.getId()); + + //then + assertThat(foundCommunityBoard).isEmpty(); + } + @DisplayName("저장된 전체 커뮤니티 게시글을 목록으로 조회할 수 있다. (Repository)") @Test void getCommunityBoards() { diff --git a/src/test/java/com/somemore/community/service/command/CreateCommunityBoardServiceTest.java b/src/test/java/com/somemore/community/service/command/CreateCommunityBoardServiceTest.java index d2cb672a7..b0261b01c 100644 --- a/src/test/java/com/somemore/community/service/command/CreateCommunityBoardServiceTest.java +++ b/src/test/java/com/somemore/community/service/command/CreateCommunityBoardServiceTest.java @@ -41,7 +41,7 @@ void createCommunityWithDto() { Long communityId = createCommunityBoardService.createCommunityBoard(dto, writerId, imgUrl); //then - Optional communityBoard = communityBoardRepository.findById(communityId); + Optional communityBoard = communityBoardRepository.getCommunityBoardWithId(communityId); assertThat(communityBoard).isPresent(); assertThat(communityBoard.get().getId()).isEqualTo(communityId); @@ -67,7 +67,7 @@ void createCommunityWithoutImgUrl() { Long communityId = createCommunityBoardService.createCommunityBoard(dto, writerId, imgUrl); //then - Optional communityBoard = communityBoardRepository.findById(communityId); + Optional communityBoard = communityBoardRepository.getCommunityBoardWithId(communityId); assertThat(communityBoard).isPresent(); assertThat(communityBoard.get().getId()).isEqualTo(communityId); diff --git a/src/test/java/com/somemore/community/service/query/CommunityBoardQueryServiceTest.java b/src/test/java/com/somemore/community/service/query/CommunityBoardQueryServiceTest.java index 068e3b8d1..02b432004 100644 --- a/src/test/java/com/somemore/community/service/query/CommunityBoardQueryServiceTest.java +++ b/src/test/java/com/somemore/community/service/query/CommunityBoardQueryServiceTest.java @@ -85,8 +85,8 @@ void getAllCommunityBoards() { List dtos = communityBoardQueryService.getCommunityBoards(); // then - Optional communityBoard1 = communityBoardRepository.findById(communityId1); - Optional communityBoard2 = communityBoardRepository.findById(communityId2); + Optional communityBoard1 = communityBoardRepository.getCommunityBoardWithId(communityId1); + Optional communityBoard2 = communityBoardRepository.getCommunityBoardWithId(communityId2); assertThat(dtos) @@ -135,8 +135,8 @@ void getCommunityBoardsByWriter() { List dtos = communityBoardQueryService.getCommunityBoardsByWriterId(volunteer.getId()); //then - Optional communityBoard1 = communityBoardRepository.findById(communityId1); - Optional communityBoard2 = communityBoardRepository.findById(communityId2); + Optional communityBoard1 = communityBoardRepository.getCommunityBoardWithId(communityId1); + Optional communityBoard2 = communityBoardRepository.getCommunityBoardWithId(communityId2); assertThat(dtos) .isNotNull()