From 8ab18d462f0f08e62b9499e95417394d6306d167 Mon Sep 17 00:00:00 2001 From: Jisu Lim <69844138+Ji-soo708@users.noreply.github.com> Date: Mon, 6 May 2024 23:46:19 +0900 Subject: [PATCH] =?UTF-8?q?[OING-329]=20refactor:=20=EB=AF=B8=EC=85=98=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=A4=91=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EA=B0=80=EC=A1=B1=20=EA=B5=AC=EC=84=B1=EC=9B=90=20?= =?UTF-8?q?=EC=88=98=20=EA=B3=84=EC=82=B0=ED=95=A0=20=EB=95=8C,=20?= =?UTF-8?q?=EC=96=B4=EC=A0=9C=20=EB=82=A0=EC=A7=9C=20=EA=B8=B0=EC=A4=80?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=84=B8=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#248)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: count family members by family ID logic to count based on yesterday's date * test: fix broken test due to changed logic * style: change api summary * refactor: delete unused method * refactor: refactor isCreatedSurvivalPostByMajority code * test: delete unused test --- .../repository/PostRepositoryCustomImpl.java | 26 ++--------- .../repository/PostRepositoryCustomTest.java | 46 ++++++------------- .../java/com/oing/restapi/PostApiTest.java | 4 +- .../com/oing/controller/PostController.java | 3 +- .../oing/repository/PostRepositoryCustom.java | 4 +- .../main/java/com/oing/restapi/PostApi.java | 2 +- .../java/com/oing/service/PostService.java | 9 ++-- .../com/oing/service/PostServiceTest.java | 2 +- 8 files changed, 30 insertions(+), 66 deletions(-) diff --git a/gateway/src/main/java/com/oing/repository/PostRepositoryCustomImpl.java b/gateway/src/main/java/com/oing/repository/PostRepositoryCustomImpl.java index a77ee237..f47101ae 100644 --- a/gateway/src/main/java/com/oing/repository/PostRepositoryCustomImpl.java +++ b/gateway/src/main/java/com/oing/repository/PostRepositoryCustomImpl.java @@ -119,33 +119,13 @@ public boolean existsByMemberIdAndFamilyIdAndTypeAndCreatedAt(String memberId, S } @Override - public boolean isCreatedSurvivalPostByMajority(LocalDate date, String familyId) { - long totalFamilyMembers = queryFactory - .select(member.count()) - .from(member) - .where(member.familyId.eq(familyId) - .and(isActiveMember())) - .fetchFirst(); - - long survivalPostCount = queryFactory - .select(post.count()) - .from(post) - .where( - post.familyId.eq(familyId), - post.type.eq(PostType.SURVIVAL), - dateExpr(post.createdAt).eq(date) - ) - .fetchFirst(); - - return survivalPostCount >= totalFamilyMembers / 2; - } - - @Override - public int countFamilyMembersByFamilyId(String familyId) { + public int countFamilyMembersByFamilyIdAtYesterday(String familyId) { + LocalDate today = ZonedDateTime.now().toLocalDate(); Long count = queryFactory .select(member.id.count()) .from(member) .where(member.familyId.eq(familyId) + .and(dateExpr(member.familyJoinAt).before(today)) .and(isActiveMember())) .fetchFirst(); return count.intValue(); diff --git a/gateway/src/test/java/com/oing/repository/PostRepositoryCustomTest.java b/gateway/src/test/java/com/oing/repository/PostRepositoryCustomTest.java index 649b8ee2..923d98f9 100644 --- a/gateway/src/test/java/com/oing/repository/PostRepositoryCustomTest.java +++ b/gateway/src/test/java/com/oing/repository/PostRepositoryCustomTest.java @@ -46,7 +46,7 @@ class PostRepositoryCustomTest { "testMember1", "profile.com/1", "1", - LocalDateTime.now() + LocalDateTime.now().minusDays(1) ); private final Member testMember2 = new Member( @@ -56,7 +56,7 @@ class PostRepositoryCustomTest { "testMember2", "profile.com/2", "2", - LocalDateTime.now() + LocalDateTime.now().minusDays(1) ); private final Member testMember3 = new Member( @@ -65,7 +65,17 @@ class PostRepositoryCustomTest { LocalDate.of(1999, 10, 18), "testMember3", "profile.com/3", - "2", + "3", + LocalDateTime.now().minusDays(1) + ); + + private final Member testMember4 = new Member( + "testMember4", + "testFamily", + LocalDate.of(1999, 10, 18), + "testMember4", + "profile.com/4", + "4", LocalDateTime.now() ); @@ -128,32 +138,6 @@ void setup() { assertThat(exists).isFalse(); } - @Test - void 미션_키_획득한_날짜에_가족의_미션_키_획득_여부를_조회한다() { - // given - String familyId = testMember1.getFamilyId(); - LocalDate today = LocalDate.of(2023, 11, 1); - - // when - boolean exists = postRepositoryCustomImpl.isCreatedSurvivalPostByMajority(today, familyId); - - // then - assertThat(exists).isTrue(); - } - - @Test - void 미션_키_획득하지_못한_날짜에_가족의_미션_키_획득_여부를_조회한다() { - // given - String familyId = testMember1.getFamilyId(); - LocalDate today = LocalDate.of(2024, 4, 1); - - // when - boolean exists = postRepositoryCustomImpl.isCreatedSurvivalPostByMajority(today, familyId); - - // then - assertThat(exists).isFalse(); - } - @Test void 해당_가족_구성원이_오늘_올린_생존신고_게시글_수를_조회한다() { // given @@ -167,12 +151,12 @@ void setup() { } @Test - void 가족_구성원_수를_조회한다() { + void 어제_날짜를_기준으로_가족_구성원_수를_조회한다() { // given String familyId = testMember1.getFamilyId(); // when - int familyMemberCount = postRepositoryCustomImpl.countFamilyMembersByFamilyId(familyId); + int familyMemberCount = postRepositoryCustomImpl.countFamilyMembersByFamilyIdAtYesterday(familyId); // then assertThat(familyMemberCount).isEqualTo(2); diff --git a/gateway/src/test/java/com/oing/restapi/PostApiTest.java b/gateway/src/test/java/com/oing/restapi/PostApiTest.java index 5f079b8e..24351770 100644 --- a/gateway/src/test/java/com/oing/restapi/PostApiTest.java +++ b/gateway/src/test/java/com/oing/restapi/PostApiTest.java @@ -70,7 +70,7 @@ void setUp() { TEST_FAMILY_ID, LocalDate.now(), "", "", "", - LocalDateTime.now() + LocalDateTime.now().minusDays(1) ) ); TEST_MEMBER1_TOKEN = tokenGenerator @@ -82,7 +82,7 @@ void setUp() { TEST_FAMILY_ID, LocalDate.now(), "", "", "", - LocalDateTime.now() + LocalDateTime.now().minusDays(1) ) ); TEST_MEMBER2_TOKEN = tokenGenerator diff --git a/post/src/main/java/com/oing/controller/PostController.java b/post/src/main/java/com/oing/controller/PostController.java index fba17a52..8081b3ee 100644 --- a/post/src/main/java/com/oing/controller/PostController.java +++ b/post/src/main/java/com/oing/controller/PostController.java @@ -120,9 +120,8 @@ public MissionUploadStatusResponse getMissionUploadStatus(String memberId, Strin @Override public MissionAvailableStatusResponse getMissionAvailableStatus(String memberId, String loginMemberId, String loginFamilyId) { validateMemberId(loginMemberId, memberId); - LocalDate today = ZonedDateTime.now().toLocalDate(); - if (postService.isCreatedSurvivalPostByMajority(today, loginFamilyId)) { + if (postService.isCreatedSurvivalPostByMajority(loginFamilyId)) { return new MissionAvailableStatusResponse(true); } return new MissionAvailableStatusResponse(false); diff --git a/post/src/main/java/com/oing/repository/PostRepositoryCustom.java b/post/src/main/java/com/oing/repository/PostRepositoryCustom.java index dca15e78..64038258 100644 --- a/post/src/main/java/com/oing/repository/PostRepositoryCustom.java +++ b/post/src/main/java/com/oing/repository/PostRepositoryCustom.java @@ -24,9 +24,7 @@ QueryResults searchPosts(int page, int size, LocalDate date, String member boolean existsByMemberIdAndFamilyIdAndTypeAndCreatedAt(String memberId, String familyId, PostType type, LocalDate postDate); - boolean isCreatedSurvivalPostByMajority(LocalDate date, String familyId); - - int countFamilyMembersByFamilyId(String familyId); + int countFamilyMembersByFamilyIdAtYesterday(String familyId); int countTodaySurvivalPostsByFamilyId(String familyId); } diff --git a/post/src/main/java/com/oing/restapi/PostApi.java b/post/src/main/java/com/oing/restapi/PostApi.java index 7e6d2cd5..a951e737 100644 --- a/post/src/main/java/com/oing/restapi/PostApi.java +++ b/post/src/main/java/com/oing/restapi/PostApi.java @@ -147,7 +147,7 @@ MissionUploadStatusResponse getMissionUploadStatus( String loginFamilyId ); - @Operation(summary = "회원 미션 참여 가능 여부 응답 조회", description = "회원 미션 참여 가능 여부를 조회합니다.") + @Operation(summary = "가족 미션 키 획득 여부 응답 조회", description = "가족 미션 키 획득 여부를 조회합니다.") @GetMapping("/{memberId}/mission-available") MissionAvailableStatusResponse getMissionAvailableStatus( @PathVariable diff --git a/post/src/main/java/com/oing/service/PostService.java b/post/src/main/java/com/oing/service/PostService.java index d6a7c5d3..2d7888c4 100644 --- a/post/src/main/java/com/oing/service/PostService.java +++ b/post/src/main/java/com/oing/service/PostService.java @@ -161,12 +161,15 @@ public boolean existsByMemberIdAndFamilyIdAndTypeAndCreatedAt(String memberId, S return postRepository.existsByMemberIdAndFamilyIdAndTypeAndCreatedAt(memberId, familyId, type, postDate); } - public boolean isCreatedSurvivalPostByMajority(LocalDate date, String familyId) { - return postRepository.isCreatedSurvivalPostByMajority(date, familyId); + public boolean isCreatedSurvivalPostByMajority(String familyId) { + int totalFamilyMembers = postRepository.countFamilyMembersByFamilyIdAtYesterday(familyId); + int survivalPostCount = postRepository.countTodaySurvivalPostsByFamilyId(familyId); + + return survivalPostCount >= totalFamilyMembers / 2; } public int calculateRemainingSurvivalPostCountUntilMissionUnlocked(String familyId) { - int familyMemberCount = postRepository.countFamilyMembersByFamilyId(familyId); + int familyMemberCount = postRepository.countFamilyMembersByFamilyIdAtYesterday(familyId); int requiredSurvivalPostCount = familyMemberCount / 2; int todaySurvivalPostCount = postRepository.countTodaySurvivalPostsByFamilyId(familyId); diff --git a/post/src/test/java/com/oing/service/PostServiceTest.java b/post/src/test/java/com/oing/service/PostServiceTest.java index 39179aee..7608dabc 100644 --- a/post/src/test/java/com/oing/service/PostServiceTest.java +++ b/post/src/test/java/com/oing/service/PostServiceTest.java @@ -42,7 +42,7 @@ public class PostServiceTest { String familyId = "1"; //when - when(postRepository.countFamilyMembersByFamilyId(familyId)).thenReturn(1); + when(postRepository.countFamilyMembersByFamilyIdAtYesterday(familyId)).thenReturn(1); when(postRepository.countTodaySurvivalPostsByFamilyId(familyId)).thenReturn(0); //then