From 4aec30b060f968781943bcbeb08fdfd52831a513 Mon Sep 17 00:00:00 2001 From: GwonDooHyeon Date: Sun, 5 Jan 2025 16:24:54 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=B1=8C=EB=A6=B0=EC=A7=80=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존: hard delete -> 변경: soft delete --- .../service/challenge/ChallengeService.java | 2 +- .../challenge/domain/challenge/Challenge.java | 4 ++ .../challenge/ChallengeQueryRepository.java | 1 + .../challenge/ChallengeServiceTest.java | 39 +++++++++++++++---- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/challenge/api/service/challenge/ChallengeService.java b/src/main/java/com/challenge/api/service/challenge/ChallengeService.java index 985e253..a6cff5a 100644 --- a/src/main/java/com/challenge/api/service/challenge/ChallengeService.java +++ b/src/main/java/com/challenge/api/service/challenge/ChallengeService.java @@ -125,7 +125,7 @@ public Long deleteChallenge(Member member, Long challengeId) { challengeValidator.challengeExistsBy(member, challengeId); Challenge challenge = challengeRepository.getReferenceById(challengeId); - challengeRepository.delete(challenge); + challenge.delete(); return challengeId; } diff --git a/src/main/java/com/challenge/domain/challenge/Challenge.java b/src/main/java/com/challenge/domain/challenge/Challenge.java index bfbd8fb..047bb3c 100644 --- a/src/main/java/com/challenge/domain/challenge/Challenge.java +++ b/src/main/java/com/challenge/domain/challenge/Challenge.java @@ -119,4 +119,8 @@ public void addRecord(Record record) { this.records.add(record); } + public void delete() { + this.isDeleted = true; + } + } diff --git a/src/main/java/com/challenge/domain/challenge/ChallengeQueryRepository.java b/src/main/java/com/challenge/domain/challenge/ChallengeQueryRepository.java index bf90a67..740c3e9 100644 --- a/src/main/java/com/challenge/domain/challenge/ChallengeQueryRepository.java +++ b/src/main/java/com/challenge/domain/challenge/ChallengeQueryRepository.java @@ -27,6 +27,7 @@ public List findChallengesBy(Member member, LocalDate targetDate) { return queryFactory.selectFrom(challenge) .where(challenge.member.eq(member) + .and(challenge.isDeleted.isFalse()) .and(challenge.endDateTime.goe(startDateTime)) .and(challenge.startDateTime.loe(endDateTime))) .fetch(); diff --git a/src/test/java/com/challenge/api/service/challenge/ChallengeServiceTest.java b/src/test/java/com/challenge/api/service/challenge/ChallengeServiceTest.java index 283f563..f2ce81a 100644 --- a/src/test/java/com/challenge/api/service/challenge/ChallengeServiceTest.java +++ b/src/test/java/com/challenge/api/service/challenge/ChallengeServiceTest.java @@ -339,7 +339,7 @@ void deleteChallenge() { Category category = createCategory("카테고리"); categoryRepository.save(category); - ChallengeCreateServiceRequest request1 = ChallengeCreateServiceRequest.builder() + ChallengeCreateRequest request1 = ChallengeCreateRequest.builder() .title("제목1") .durationInWeeks(2) .weeklyGoalCount(3) @@ -347,7 +347,7 @@ void deleteChallenge() { .color("색상1") .content("내용1") .build(); - ChallengeCreateServiceRequest request2 = ChallengeCreateServiceRequest.builder() + ChallengeCreateRequest request2 = ChallengeCreateRequest.builder() .title("제목2") .durationInWeeks(2) .weeklyGoalCount(3) @@ -356,18 +356,41 @@ void deleteChallenge() { .content("내용2") .build(); - Challenge challenge1 = Challenge.create(member, category, request1, LocalDateTime.of(2024, 11, 11, 10, 10, 30)); - Challenge challenge2 = Challenge.create(member, category, request2, LocalDateTime.of(2024, 11, 11, 11, 10, 30)); + Challenge challenge1 = Challenge.create(member, category, request1.toServiceRequest() + , LocalDateTime.of(2024, 11, 11, 10, 10, 30)); + Challenge challenge2 = Challenge.create(member, category, request2.toServiceRequest(), + LocalDateTime.of(2024, 11, 11, 11, 10, 30)); challengeRepository.saveAll(List.of(challenge1, challenge2)); - // when + // when - 챌린지 삭제 Long deletedChallenge = challengeService.deleteChallenge(member, challenge2.getId()); - // then + // then - 삭제된 챌린지 검증 assertThat(deletedChallenge).isEqualTo(challenge2.getId()); - assertThat(challengeRepository.findAll()).hasSize(1) + assertThat(challengeRepository.findAll()).hasSize(2) + .extracting("title", "content", "isDeleted") + .containsExactly( + tuple("제목1", "내용1", false), + tuple("제목2", "내용2", true) + ); + + // given - 모든 챌린지 조회를 위한 요청 request + ChallengeQueryRequest challengeQueryRequest = ChallengeQueryRequest.builder() + .queryDate("2024-12-28") + .build(); + + // when - 모든 챌린지 조회 + List challenges = challengeService.getChallenges( + member, + challengeQueryRequest.toServiceRequest() + ); + + // then - 조회된 챌린지들에 대한 검증 + assertThat(challenges).hasSize(1) .extracting("title", "content") - .containsExactly(tuple("제목1", "내용1")); + .containsExactlyInAnyOrder( + tuple("제목1", "내용1") + ); } private Member createMember() {