- Team Notion : https://www.notion.so/4-8a96e7a3ca6f44e98e78e70ac4bb1fda
 - Team GitHub : https://github.com/20230206/tutormatching
 
- 오늘 내가 한 일
 
1) 회원 닉네임 수정 + TestCode
2) 회원 프로필 요소 조회 + TestCode
- 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;
    }
- 간단한 코드이지만, 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());
    }
}
- CodingTestPosting GitHub : https://github.com/PriceHoon/codingTestJava