[02.12] 내일배움캠프[Spring] TIL-69

박상훈·2023년 2월 12일
0

내일배움캠프[TIL]

목록 보기
69/72

[02.12] 내일배움캠프[Spring] TIL-69

1. Spring final Project

  • 오늘 내가 한 일
    1) 회원 닉네임 수정 + TestCode
    2) 회원 프로필 요소 조회 + TestCode

2. FeeBack

  • Issue

1) 인증된 Member객체를 넘겨줄 것이고( 시큐리티에 의해 ), 인증객체를 만드는 중에 memeberEntity를 조회하는데, 굳이 다시 조회할 필요가 있을까요?
-> 피드백 반영 완료

 @Override
    @Transactional
    public String updateNickname(String nickname, Member member) {

        member.updateNickName(nickname);

        return "수정이 완료되었습니다!";
    }

    @Override
    @Transactional(readOnly = true)
    public Member findMemberByEmail(String email) {
        return memberRepository.findByEmail(email).orElseThrow(
            () -> new IllegalArgumentException("등록된 사용자가 없습니다!")
        );

    }

    @Override
    @Transactional
    public String getNickname(Member member) {

        return member.getNickname();

    }
    @Override
    @Transactional
    public String getLocation(Member member) {

        return locationService.getLocation(member).getAddress();

    }
    @Override
    @Transactional
    public LocalDate getSignupDate(Member member) {

        return member.getCreatedAt();

    }
    @Override
    @Transactional
    public int getLevel(Member member) {
        return member.getLevel();
    }
    @Override
    @Transactional
    public String getImage(Member member) {
        return member.getImage();
    }

2) DB에서 하나의 값을 조회하는 경우는 if(is null?)같은 형식이 아닌 Optiional.OrElseThrow()로 작성해주세요!
-> 피드백 반영 완료

  @Override
    @Transactional
    public Location findMemberLocation(Long memberId){
        Location location = locationRepository.findByMemberId(memberId).orElseThrow(
                () -> new IllegalArgumentException("위치 정보 값이 없습니다!")
        );
        return location;
    }

3. TestCode

  • 간단한 코드이지만, PostMan테스트가 불가한 상황으로, 단위 테스트를 진행
  • MemberServiceImplTest
package com.sparta.soomtut.service.impl;

import com.sparta.soomtut.entity.Location;
import com.sparta.soomtut.entity.Member;
import com.sparta.soomtut.repository.MemberRepository;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import java.time.LocalDate;
import java.util.Optional;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@ExtendWith(MockitoExtension.class)
class MemberServiceImplTest {

    @Mock
    MemberRepository memberRepository;

    @Mock
    LocationServiceImpl locationService;

    @InjectMocks
    MemberServiceImpl memberService;

    @Test
    @DisplayName("유저 닉네임 업데이트(성공)")
    void updateNickname() {

        Member member = new Member("user@user.com","asd12345","user1");

        String msg = memberService.updateNickname("new nickname",member);

        assertThat(msg).isEqualTo("수정이 완료되었습니다!");
        assertThat(member.getNickname()).isEqualTo("new nickname");

    }

    @Test
    @DisplayName("닉네임 가져오기")
    void getNickname(){
        Member member = new Member("user@user.com","asd12345","user1");
        //given(memberService.findMemberById(member.getId())).willReturn(member);
        String nickName = memberService.getNickname(member);
        assertThat(member.getNickname()).isEqualTo(nickName);

    }

    @Test
    @DisplayName("위치정보 가져오기")
    void getLocation(){
        Member member = new Member("user@user.com","asd12345","user1");
        Location location = new Location(1L,member,"서울",3f,3f);
        given(locationService.getLocation(member)).willReturn(location);
        String address = memberService.getLocation(member);
        assertThat(address).isEqualTo("서울");

    }

    @Test
    @DisplayName("가입일자 가져오기")
    void getSignupDate(){
        Member member = new Member("user@user.com","asd12345","user1");
        LocalDate signupDate = memberService.getSignupDate(member);

        assertThat(signupDate).isEqualTo(member.getCreatedAt());

    }

    @Test
    @DisplayName("레벨 가져오기")
    void getLevel(){
        Member member = new Member("user@user.com","asd12345","user1");
        int level = memberService.getLevel(member);
        assertThat(level).isEqualTo(0);

    }

    @Test
    @DisplayName("이미지 가져오기")
    void getImage(){
        Member member = new Member("user@user.com","asd12345","user1");
        String image = memberService.getImage(member);
        assertThat(image).isEqualTo(member.getImage());

    }


}

4. CodingTest

profile
기록하는 습관

0개의 댓글