33import static org .assertj .core .api .Assertions .assertThatCode ;
44import static org .assertj .core .api .Assertions .assertThatThrownBy ;
55
6+ import maeilmail .subscribe .command .domain .TemporalSubscribe ;
7+ import maeilmail .subscribe .command .domain .TemporalSubscribeRepository ;
68import maeilmail .support .IntegrationTestSupport ;
79import org .junit .jupiter .api .DisplayName ;
810import org .junit .jupiter .api .Test ;
@@ -13,6 +15,9 @@ class TemporalSubscribeManagerTest extends IntegrationTestSupport {
1315 @ Autowired
1416 private TemporalSubscribeManager temporalSubscribeManager ;
1517
18+ @ Autowired
19+ private TemporalSubscribeRepository temporalSubscribeRepository ;
20+
1621 @ Test
1722 @ DisplayName ("이메일이 인증되지 않으면 검증에 실패한다." )
1823 void cantVerify () {
@@ -33,13 +38,25 @@ void cantVerify2() {
3338
3439 @ Test
3540 @ DisplayName ("이메일 인증 코드가 같으면 검증에 성공한다." )
36- void cantVerify3 () {
41+ void canVerify () {
3742 temporalSubscribeManager .add ("test3@naver.com" , "3212" );
3843
3944 assertThatCode (() -> temporalSubscribeManager .verify ("test3@naver.com" , "3212" ))
4045 .doesNotThrowAnyException ();
4146 }
4247
48+ @ Test
49+ @ DisplayName ("기존에 저장된 인증 코드가 N개인 경우, 하나의 인증 코드만 있어도 검증에 성공한다." )
50+ void canVerify2 () {
51+ createTemporalSubscribe ("test4@naver.com" , "3212" );
52+ createTemporalSubscribe ("test4@naver.com" , "2111" );
53+ createTemporalSubscribe ("test4@naver.com" , "3222" );
54+ createTemporalSubscribe ("test4@naver.com" , "3221" );
55+
56+ assertThatCode (() -> temporalSubscribeManager .verify ("test4@naver.com" , "3222" ))
57+ .doesNotThrowAnyException ();
58+ }
59+
4360 @ Test
4461 @ DisplayName ("이미 인증 코드를 받은 적이 있다면, 기존 인증 코드를 제거한다." )
4562 void deleteBefore () {
@@ -51,4 +68,25 @@ void deleteBefore() {
5168 assertThatCode (() -> temporalSubscribeManager .verify ("test4@naver.com" , "1234" ))
5269 .doesNotThrowAnyException ();
5370 }
71+
72+ @ Test
73+ @ DisplayName ("기존에 저장된 인증 코드가 N개인 경우, 모든 인증 코드를 제거할 수 있다." )
74+ void deleteAllBefore () {
75+ createTemporalSubscribe ("test4@naver.com" , "3212" );
76+ createTemporalSubscribe ("test4@naver.com" , "2111" );
77+ createTemporalSubscribe ("test4@naver.com" , "3222" );
78+ createTemporalSubscribe ("test4@naver.com" , "3221" );
79+
80+ temporalSubscribeManager .add ("test4@naver.com" , "1234" );
81+
82+ assertThatCode (() -> temporalSubscribeManager .verify ("test4@naver.com" , "1234" ))
83+ .doesNotThrowAnyException ();
84+ }
85+
86+
87+ private void createTemporalSubscribe (String email , String verifyCode ) {
88+ TemporalSubscribe temporalSubscribe = new TemporalSubscribe (email , verifyCode );
89+
90+ temporalSubscribeRepository .save (temporalSubscribe );
91+ }
5492}
0 commit comments