Skip to content

[Test] 회원 관리 서비스 커버리지 올리기 #262

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,6 @@ public ResponseEntity<AdminMemberDetailResponse> getMember(@PathVariable Long id
return ResponseEntity.ok(member);
}

@GetMapping("/withdrawal")
public ResponseEntity<Page<WithdrawalMemberResponse>> getAllWithdrawMembers(
@PageableDefault(page = 0, size = 10, sort = "email") Pageable pageable) {

Page<WithdrawalMemberResponse> members = adminService.getAllWithdrawalMembers(pageable);
return ResponseEntity.ok(members);
}

@GetMapping("/filter")
public ResponseEntity<ApiResponse<PageResponse<AdminMemberResponse>>> getAllFilteredMembers(
@PageableDefault(page = 0, size = 10, sort = "email") Pageable pageable,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,6 @@ public AdminMemberDetailResponse getMember(Long id) {
return AdminMapper.INSTANCE.toAdminMemberResponse(member, adminBookmarkResponses);
}

public Page<WithdrawalMemberResponse> getAllWithdrawalMembers(Pageable pageable) {

return memberRepository.findAllWithdrawMembers(pageable);
}

public PageResponse<AdminMemberResponse> getAllMemberWithFilter(Pageable pageable,
MemberFilterRequest memberFilterRequest) {

Expand All @@ -57,6 +52,10 @@ public PageResponse<AdminMemberResponse> 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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -32,6 +41,9 @@ public class AdminMemberServiceTest extends ServiceTest {
@Autowired
SocialProviderRepository socialProviderRepository;

@Autowired
BookmarkService bookmarkService;

@BeforeEach
void setUp() {
createMember("[email protected]", "user1", MemberRole.USER, MemberStatus.ACTIVITY, null);
Expand All @@ -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("[email protected]");
assertThat(adminService.getMember(member.getMemberId()).getEmail()).isEqualTo(
"[email protected]");
}

@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 기간별_조회_시작일_미지정_테스트() {
Expand All @@ -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()
Expand Down Expand Up @@ -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();
}

}
2 changes: 1 addition & 1 deletion submodule