/
MemberSignUpServiceTest.java
79 lines (57 loc) · 2.37 KB
/
MemberSignUpServiceTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.book.member.service;
import com.book.member.domain.Email;
import com.book.member.domain.Member;
import com.book.member.dto.MemberSignupRequest;
import com.book.member.exception.MemberDuplicationException;
import com.book.member.repository.MemberRepository;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import static org.hamcrest.Matchers.is;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doThrow;
@RunWith(MockitoJUnitRunner.class)
public class MemberSignUpServiceTest {
@InjectMocks
private MemberSignUpService memberSignUpService;
@Mock
private MemberHelperService memberHelperService;
@Mock
private MemberRepository memberRepository;
private final String TEST_EMAIL = "test@test.com";
// 메소드네임 / 테스트하고자하는 형태 / 예상되어지는 행동
// isAdult_AgeLessThan18_False
// withdrawMoney_InvalidAccount_ExceptionThrown
// admitStudent_MissingMandatoryFields_FailToAdmit
// 이메일중복체크를 한다.
// 데이터를 디비에 넣는다.
@Test(expected = MemberDuplicationException.class)
public void signUp_EmailIsDuplicated_MemberDuplicationException() {
//given
final MemberSignupRequest request = buildRequest(TEST_EMAIL);
doThrow(new MemberDuplicationException()).when(memberHelperService).verifyEmailIsDuplicated(request.getEmail());
//when
final Member member = memberSignUpService.signUp(request);
//then
}
@Test
public void signUp_SignUpIsSuccess_Member() {
//given
final MemberSignupRequest request = buildRequest(TEST_EMAIL);
given(memberRepository.save(any(Member.class))).willReturn(request.toMember());
//when
final Member member = memberSignUpService.signUp(request);
//then
Mockito.verify(memberRepository, atLeast(1)).save(any(Member.class));
Assert.assertThat(member.getEmail(), is(request.getEmail()));
}
private MemberSignupRequest buildRequest(final String email) {
return MemberSignupRequest.builder().email(new Email(email)).build();
}
}