Skip to content

Commit 3ea0a19

Browse files
authored
Merge pull request #66 from What-s-Your-Plan/feat/#65
deleteMember 메서드 분리
2 parents b176f05 + 8a91bdc commit 3ea0a19

File tree

4 files changed

+67
-10
lines changed

4 files changed

+67
-10
lines changed

application/wypl-core/src/main/java/com/wypl/wyplcore/auth/service/AuthServiceImpl.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
import com.wypl.jpamemberdomain.member.OauthProvider;
1616
import com.wypl.jpamemberdomain.member.data.MemberSaveDto;
1717
import com.wypl.jpamemberdomain.member.data.SocialMemberSaveDto;
18-
import com.wypl.jpamemberdomain.member.repository.MemberRepository;
1918
import com.wypl.jpamemberdomain.member.repository.SocialMemberRepository;
2019
import com.wypl.jpamemberdomain.member.utils.SocialMemberRepositoryUtils;
2120
import com.wypl.wyplcore.auth.data.response.AuthTokensResponse;
21+
import com.wypl.wyplcore.member.service.MemberServiceImpl;
2222

2323
import lombok.RequiredArgsConstructor;
2424

@@ -28,8 +28,8 @@
2828
public class AuthServiceImpl {
2929
private final GoogleOAuthClient googleOAuthClient;
3030
private final SocialMemberRepository socialMemberRepository;
31-
private final MemberRepository memberRepository;
3231
private final AuthDomainServiceImpl authDomainService;
32+
private final MemberServiceImpl memberService;
3333

3434
@Transactional
3535
public AuthTokensResponse generateToken(final String provider, final String code) {
@@ -68,21 +68,18 @@ public void logout(AuthMember authMember) {
6868
public void quitMember(AuthMember authMember) {
6969
// Todo : 회원 탈퇴 로직 논의
7070
deleteToken(authMember);
71-
deleteMember(authMember);
71+
memberService.deleteMember(authMember);
7272
}
7373

7474
private void deleteToken(AuthMember authMember) {
7575
authDomainService.deleteToken(authMember.accessToken());
7676
}
7777

78-
private void deleteMember(AuthMember authMember) {
79-
memberRepository.deleteById(authMember.id());
80-
}
81-
8278
private boolean isInvalidRefreshToken(String accessToken, String refreshToken) {
8379
return refreshToken.isEmpty() || !refreshToken.equals(authDomainService.getRefreshToken(accessToken));
8480
}
8581

82+
// todo:
8683
private long findMemberIdAfterSaveMember(String accessToken, GoogleUserInfoResponse googleUserInfoResponse) {
8784
if (isNewMember(googleUserInfoResponse)) {
8885
LocalDate birthday = googleOAuthClient.fetchBirthday(accessToken);
@@ -105,6 +102,7 @@ private long findMemberIdAfterSaveMember(String accessToken, GoogleUserInfoRespo
105102
return SocialMemberRepositoryUtils.getSocialMember(socialMemberRepository, googleUserInfoResponse.id()).getId();
106103
}
107104

105+
// todo:
108106
private boolean isNewMember(GoogleUserInfoResponse googleUserInfoResponse) {
109107
return !socialMemberRepository.existsByOauthProviderAndOauthId(OauthProvider.GOOGLE,
110108
googleUserInfoResponse.id());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.wypl.wyplcore.member.service;
2+
3+
import org.springframework.stereotype.Service;
4+
import org.springframework.transaction.annotation.Transactional;
5+
6+
import com.wypl.googleoauthclient.domain.AuthMember;
7+
import com.wypl.jpamemberdomain.member.repository.MemberRepository;
8+
9+
import lombok.RequiredArgsConstructor;
10+
11+
@Transactional(readOnly = true)
12+
@RequiredArgsConstructor
13+
@Service
14+
public class MemberServiceImpl {
15+
private final MemberRepository memberRepository;
16+
17+
@Transactional
18+
public void deleteMember(AuthMember authMember) {
19+
memberRepository.deleteById(authMember.id());
20+
}
21+
}

application/wypl-core/src/test/java/com/wypl/wyplcore/auth/service/AuthServiceImplTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
import com.wypl.jpamemberdomain.member.data.MemberSaveDto;
3131
import com.wypl.jpamemberdomain.member.data.SocialMemberSaveDto;
3232
import com.wypl.jpamemberdomain.member.domain.SocialMember;
33-
import com.wypl.jpamemberdomain.member.repository.MemberRepository;
3433
import com.wypl.jpamemberdomain.member.repository.SocialMemberRepository;
3534
import com.wypl.wyplcore.auth.data.response.AuthTokensResponse;
35+
import com.wypl.wyplcore.member.service.MemberServiceImpl;
3636

3737
@ExtendWith(MockitoExtension.class)
3838
class AuthServiceImplTest {
@@ -45,7 +45,7 @@ class AuthServiceImplTest {
4545
@Mock
4646
private AuthDomainServiceImpl authDomainService;
4747
@Mock
48-
private MemberRepository memberRepository;
48+
private MemberServiceImpl memberService;
4949

5050
@DisplayName("로그인 및 회원가입 로직을 테스트한다.")
5151
@Nested
@@ -210,6 +210,6 @@ void quitMemberTest() {
210210

211211
// Then
212212
verify(authDomainService).deleteToken(anyString());
213-
verify(memberRepository).deleteById(anyLong());
213+
verify(memberService).deleteMember(any(AuthMember.class));
214214
}
215215
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.wypl.wyplcore.member.service;
2+
3+
import static org.mockito.ArgumentMatchers.*;
4+
import static org.mockito.Mockito.*;
5+
6+
import org.junit.jupiter.api.DisplayName;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.mockito.InjectMocks;
10+
import org.mockito.Mock;
11+
import org.mockito.junit.jupiter.MockitoExtension;
12+
13+
import com.wypl.googleoauthclient.domain.AuthMember;
14+
import com.wypl.jpamemberdomain.member.repository.MemberRepository;
15+
16+
@ExtendWith(MockitoExtension.class)
17+
public class MemberServiceImplTest {
18+
@InjectMocks
19+
private MemberServiceImpl memberService;
20+
@Mock
21+
private MemberRepository memberRepository;
22+
23+
@DisplayName("Member를 정상적으로 삭제한다.")
24+
@Test
25+
void quitMemberTest() {
26+
// Given
27+
AuthMember mockAuthMember = AuthMember.of(
28+
1L,
29+
"accessToken"
30+
);
31+
32+
// When
33+
memberService.deleteMember(mockAuthMember);
34+
35+
// Then
36+
verify(memberRepository).deleteById(anyLong());
37+
}
38+
}

0 commit comments

Comments
 (0)