diff --git a/src/main/java/org/programmers/signalbuddyfinal/domain/admin/controller/AdminMemberController.java b/src/main/java/org/programmers/signalbuddyfinal/domain/admin/controller/AdminMemberController.java index dcb011ba..9214afa8 100644 --- a/src/main/java/org/programmers/signalbuddyfinal/domain/admin/controller/AdminMemberController.java +++ b/src/main/java/org/programmers/signalbuddyfinal/domain/admin/controller/AdminMemberController.java @@ -39,14 +39,6 @@ public ResponseEntity getMember(@PathVariable Long id return ResponseEntity.ok(member); } - @GetMapping("/withdrawal") - public ResponseEntity> getAllWithdrawMembers( - @PageableDefault(page = 0, size = 10, sort = "email") Pageable pageable) { - - Page members = adminService.getAllWithdrawalMembers(pageable); - return ResponseEntity.ok(members); - } - @GetMapping("/filter") public ResponseEntity>> getAllFilteredMembers( @PageableDefault(page = 0, size = 10, sort = "email") Pageable pageable, diff --git a/src/main/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberService.java b/src/main/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberService.java index 6ccba961..d8748128 100644 --- a/src/main/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberService.java +++ b/src/main/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberService.java @@ -43,11 +43,6 @@ public AdminMemberDetailResponse getMember(Long id) { return AdminMapper.INSTANCE.toAdminMemberResponse(member, adminBookmarkResponses); } - public Page getAllWithdrawalMembers(Pageable pageable) { - - return memberRepository.findAllWithdrawMembers(pageable); - } - public PageResponse getAllMemberWithFilter(Pageable pageable, MemberFilterRequest memberFilterRequest) { @@ -57,6 +52,10 @@ public PageResponse getAllMemberWithFilter(Pageable pageabl } private void checkFilterException(MemberFilterRequest memberFilterRequest) { + if(memberFilterRequest.getEndDate()== null && memberFilterRequest.getStartDate()==null) { + return; + } + if (memberFilterRequest.getStartDate() != null && memberFilterRequest.getEndDate() == null) { throw new BusinessException(AdminErrorCode.END_DATE_NOT_SELECTED); diff --git a/src/test/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberServiceTest.java b/src/test/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberServiceTest.java index 2b52d2d0..cbe8c3f7 100644 --- a/src/test/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberServiceTest.java +++ b/src/test/java/org/programmers/signalbuddyfinal/domain/admin/service/AdminMemberServiceTest.java @@ -1,12 +1,21 @@ package org.programmers.signalbuddyfinal.domain.admin.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import java.time.LocalDateTime; +import java.util.Optional; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.programmers.signalbuddyfinal.domain.admin.dto.AdminMemberRequest; import org.programmers.signalbuddyfinal.domain.admin.dto.MemberFilterRequest; +import org.programmers.signalbuddyfinal.domain.bookmark.dto.BookmarkRequest; +import org.programmers.signalbuddyfinal.domain.bookmark.entity.Bookmark; +import org.programmers.signalbuddyfinal.domain.bookmark.service.BookmarkService; import org.programmers.signalbuddyfinal.domain.member.entity.Member; import org.programmers.signalbuddyfinal.domain.member.entity.enums.MemberRole; import org.programmers.signalbuddyfinal.domain.member.entity.enums.MemberStatus; @@ -32,6 +41,9 @@ public class AdminMemberServiceTest extends ServiceTest { @Autowired SocialProviderRepository socialProviderRepository; + @Autowired + BookmarkService bookmarkService; + @BeforeEach void setUp() { createMember("user1@test.com", "user1", MemberRole.USER, MemberStatus.ACTIVITY, null); @@ -46,6 +58,46 @@ void setUp() { pageable = PageRequest.of(0, 10); } + @DisplayName("회원 전체 조회 성공 테스트") + @Test + public void successGetAllMember() { + assertThat(adminService.getAllMembers(pageable).getTotalElements()).isEqualTo(9); + } + + @DisplayName("회원 조회 성공 테스트") + @Test + public void successGetMember() { + Member member = findMemberByEmail("user1@test.com"); + assertThat(adminService.getMember(member.getMemberId()).getEmail()).isEqualTo( + "user1@test.com"); + } + + @DisplayName("회원 조회 실패 예외 발생 테스트") + @Test + public void failGetMember() { + assertThrows(BusinessException.class, () -> { + adminService.getMember(20L); + }); + } + + @DisplayName("회원별 북마크 조회 성공 테스트") + @Test + public void successGetBookmarkTest() { + bookmarkService.createBookmark(createBookmarkRequest((long) 111.111, "우리집"), 1L); + bookmarkService.createBookmark(createBookmarkRequest((long) 222.222, "남의집"), 1L); + int count = adminService.getMember(1L).getBookmarkCount(); + assertThat(count).isEqualTo(2); + } + + @DisplayName("회원 필터링 조회 성공 테스트") + @Test + public void successGetAllMemberWithFilterTest() { + MemberFilterRequest request = createFilter(null, null, null, null, + null, null); + assertThat( + adminService.getAllMemberWithFilter(pageable, request).getTotalElements()).isEqualTo(9); + } + @DisplayName("기간별 조회 시작일 미지정 예외 테스트") @Test public void 기간별_조회_시작일_미지정_테스트() { @@ -58,19 +110,56 @@ void setUp() { () -> adminService.getAllMemberWithFilter(pageable, noStartDateFilter)); } + @DisplayName("기간별 조회 종료일 미지정 예외 테스트") + @Test + public void 기간별_조회_종료일_미지정_테스트() { + MemberFilterRequest noEndDateFilter = createFilter(null, null, null, + LocalDateTime.of(2025, 1, 25, 0, 0, 0), + null, null); + + assertThrows( + BusinessException.class, + () -> adminService.getAllMemberWithFilter(pageable, noEndDateFilter)); + } + @DisplayName("기간별 조회 시작일 > 종료일 예외 테스트") @Test public void 기간별_조회_시작일_종료일_비교_테스트() { MemberFilterRequest afterStartDateFilter = createFilter(null, null, null, LocalDateTime.of(2025, 1, 25, 0, 0, 0), - LocalDateTime.of(2024, 1, 25, 0, 0, 0), null); + LocalDateTime.of(2024, 1, 25, 0, 0, 0), null); assertThrows( BusinessException.class, () -> adminService.getAllMemberWithFilter(pageable, afterStartDateFilter)); } + @DisplayName("기간별 조회 성공 테스트") + @Test + public void 기간별_조회_성공_테스트() { + + MemberFilterRequest filter = createFilter(null, null, null, + LocalDateTime.of(2024, 1, 25, 0, 0, 0), + LocalDateTime.of(2025, 6, 1, 0, 0, 0), null); + + assertThat(adminService.getAllMemberWithFilter(pageable, filter) + .getTotalElements()).isEqualTo(9); + } + + @DisplayName("기간별 조회 성공 테스트") + @Test + public void 기간별_조회_미지정_성공_테스트() { + + MemberFilterRequest filter = createFilter(null, null, null, + null, null, null); + + assertThatCode(() -> + adminService.getAllMemberWithFilter(pageable, filter) + ).doesNotThrowAnyException(); + } + + private void createMember(String email, String nickname, MemberRole role, MemberStatus status, String oAuthProvider) { Member member = Member.builder() @@ -105,4 +194,18 @@ private MemberFilterRequest createFilter(MemberStatus status, MemberRole role, .search(search) .build(); } + + private Member findMemberByEmail(String email) { + return memberRepository.findByEmail(email).get(); + } + + private BookmarkRequest createBookmarkRequest(Long lat, String name) { + return BookmarkRequest.builder() + .lng(123.456) + .lat(lat) + .address("서울시 어쩌구") + .name(name) + .build(); + } + } \ No newline at end of file diff --git a/submodule b/submodule index db4fbb0d..8401e930 160000 --- a/submodule +++ b/submodule @@ -1 +1 @@ -Subproject commit db4fbb0da566ef9bc0b317f932ae7d8d4851f6e0 +Subproject commit 8401e930c997d36baaef3de57daaaa745584361a