TDD 멤버십 상세 조회 API 구현

윤현우·2023년 2월 8일
0

TDD공부

목록 보기
6/7
post-thumbnail

[ 요구사항 확인 ]

나의 멤버십 상세 조회 API

  • 기능: 나의 1개 멤버십을 상세 조회합니다.
  • 요청: 사용자 식별값, 멤버십 ID
  • 응답: 멤버십 ID, 멤버십 이름, 포인트, 가입일시

상세조회 실패시를 테스트 코드로 작성해보자.

상세조회 실패시는 해당 멤버십이 없을 때이다.

그 전에 Entity를 수정해보자

간단한 erd를 만들어보았다.

상세 조회를 할 시 본인의 인덱스를 참조하여 상세 멤버십을 조회하는 것이다.

이 전에 작성했던 기능들을 다시 수정해보자.

또, 추가되는 member 엔티티에 대한 테스트코드도 작성하자.

수정된 코드들은 내 깃에 올려두겠다.

상세 조회할 멤버십이 없을때의 실패시 테스트 코드를 작성해보자.

@Test
@DisplayName("멤버십 상세조회 실패 - 존재하지 않음")
void NoMembership() {
    //given
    Member member = Member.builder()
            .userId("userA")
            .userPassword("userAPassword")
            .userName("userA")
            .build();

    Membership userA = Membership.builder()
            .memberIdIndex(1L)
            .membershipType(MembershipType.NAVER)
            .point(10000)
            .build();

    memberRepository.save(member);
    membershipRepository.save(userA);

    //when
    Long memberIdIndex = 2L;
    MembershipType membershipType = MembershipType.NAVER;

    Membership result = memberService.readDetailMembership(memberIdIndex, membershipType);

    //then
    Assertions.assertThat(result).isNull();
}

memberService의 readDetailMembership메서드가 없어 컴파일 오류가 날 것이다.

상세 조회 메서드를 작성해보자.

public Membership readDetailMembership(Long memberIdIndex, MembershipType membershipType) {
    
    Membership detailMembership = 
    	membershipRepository.findByMemberIdIndexAndMembershipType(memberIdIndex, membershipType);

	if(detailMembership == null){
        System.out.println("해당 멤버십이 없습니다.");
        return null;
    }
        return detailMembership;
}

해당 멤버십이 없으면 null을 반환하는 메서드를 작성해보았다.

다시 돌려보게 되면, memberIndex가 2이기 때문에 "해당 멤버십이 없습니다."라는 메세지와 함께 널이 출력될 것이다.

이번에는 멤버십 상세 조회 성공 메서드를 작성해보자.

	@Test
    @DisplayName("멤버십 상세조회 성공")
    void findDetailMembership() {
        //given
        Member member = Member.builder()
                .userId("userA")
                .userPassword("userAPassword")
                .userName("userA")
                .build();

        Membership userA = Membership.builder()
                .memberIdIndex(1L)
                .membershipType(MembershipType.NAVER)
                .point(10000)
                .build();

        memberRepository.save(member);
        membershipRepository.save(userA);
        
        //when
        Membership membership = memberService.readDetailMembership(1L, MembershipType.NAVER);

        //then
        assertThat(membership).isNotNull();
        assertThat(membership.getMembershipType()).isEqualTo(MembershipType.NAVER);
        assertThat(membership.getPoint()).isEqualTo(10000);
    }

이번 테스트는 멤버 엔티티와 멤버십 엔티티를 생성하고, 해당 멤버의 네이버 멤버십을 상세조회하는 테스트이다.

정상적으로 테스트에 성공하였다.

profile
개발자가 되는 그날까지

0개의 댓글