MemberService 생성 => MemberRepository를 가지고와서 생성함
join, findMember, findId
중복회원 검증을 위해 이름을 비교해서 중복이름이 있는지 검증 후에 가입을 받음
(Optional에 담겨있어서 ifPresent 사용 가능)
public class MemberService {
private final MemberRepository memberRepository;
public MemberService() {
memberRepository = new MemoryMemberRepository();
}
/** 회원 가입 */
public long join(Member member){
// 중복 이름 가입 안됨
checkDuplicateMember(member);
memberRepository.save(member);
return member.getId();
}
// 전체 회원 조회
public List<Member> findMembers(){
return memberRepository.findAll();
}
public Optional<Member> findId(Long id){
return memberRepository.findById(id);
}
private void checkDuplicateMember(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 회원이 있습니다.");
});
}
}
@Test 해 보기
기본 절차는 given, when, then을 통해 검증
given에서는 객체를 생성하고
when에서는 생성된 객체를 가지고 실제 적용해 보고
then에서는 원하는 결과와 같은지 검증
org.assertj.core.api.Assertions.* ===> 좀더 직관적으로 비교 할 수 있음
import com.myvms.domain.Member;
import com.myvms.repository.MemoryMemberRepository;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Date;
import java.util.List;
import static org.assertj.core.api.Assertions.*;
class MemberServiceTest {
MemberService memberService;
MemoryMemberRepository memberRepository ;
@AfterEach
public void afterEach(){
memberRepository.clearStore();
}
@BeforeEach
void setUp() {
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
@Test
void join() {
//given
Member member = new Member();
member.setName("sp1");
member.setRegDate(new Date());
long joinId = memberService.join(member);
Member byId = memberService.findId(joinId).get();
assertThat(byId.getName()).isEqualTo(member.getName());
}
@Test
void checkDuplicateMember(){
Member member = new Member();
member.setName("sp1");
member.setRegDate(new Date());
Member member2 = new Member();
member2.setName("sp1");
member2.setRegDate(new Date());
memberService.join(member);
IllegalStateException e = Assertions
.assertThrows(IllegalStateException.class,
() -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("이미 회원이 있습니다.");
// try {
// memberService.join(member2);
//// fail("이미 회원이 있습니다.");
// } catch (IllegalStateException e) {
// assertThat(e.getMessage()).isEqualTo("이미 회원이 있습니다.000");
// }
}
@Test
void findMembers() {
Member member = new Member();
member.setName("sp1");
member.setRegDate(new Date());
memberService.join(member);
Member member1 = new Member();
member1.setName("sp2");
member1.setRegDate(new Date());
memberService.join(member1);
List<Member> members = memberService.findMembers();
System.out.println(members);
}
@Test
void findId() {
}
}
'Spring > spring_old' 카테고리의 다른 글
06./ Spring Web MVC (0) | 2023.01.12 |
---|---|
05./ Spring -Member-03-Bean 등록-Dependency Injection (0) | 2023.01.12 |
05./ Spring excersise-Member-01-domain and repository Test (0) | 2023.01.11 |
05./ Spring excersise-Member-01-domain and repository (0) | 2023.01.11 |
05./ Spring excersise-Member-설계 (0) | 2023.01.11 |