Skip to content

Commit 8b0f532

Browse files
committed
Merge branch 'develop' into fix/PRODUCT-153
2 parents c2bd576 + cea611d commit 8b0f532

File tree

6 files changed

+129
-5
lines changed

6 files changed

+129
-5
lines changed

src/main/java/eatda/controller/member/MemberController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ public class MemberController {
1717

1818
private final MemberService memberService;
1919

20+
@GetMapping("/api/member")
21+
public ResponseEntity<MemberResponse> getMember(LoginMember member) {
22+
MemberResponse response = memberService.getMember(member.id());
23+
return ResponseEntity.ok(response);
24+
}
25+
2026
@GetMapping("/api/member/nickname/check")
2127
public ResponseEntity<Void> checkNickname(LoginMember member, @RequestParam String nickname) {
2228
memberService.validateNickname(nickname, member.id());

src/main/java/eatda/service/member/MemberService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ public class MemberService {
1616

1717
private final MemberRepository memberRepository;
1818

19+
@Transactional(readOnly = true)
20+
public MemberResponse getMember(long memberId) {
21+
Member member = memberRepository.getById(memberId);
22+
return new MemberResponse(member);
23+
}
24+
1925
@Transactional(readOnly = true)
2026
public void validateNickname(String nickname, long memberId) {
2127
Member member = memberRepository.getById(memberId);

src/test/java/eatda/controller/BaseControllerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class BaseControllerTest {
4646
protected MemberRepository memberRepository;
4747

4848
@Autowired
49-
private JwtManager jwtManager;
49+
protected JwtManager jwtManager;
5050

5151
@MockitoBean
5252
private OauthClient oauthClient;

src/test/java/eatda/controller/member/MemberControllerTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,39 @@
44
import static org.junit.jupiter.api.Assertions.assertAll;
55

66
import eatda.controller.BaseControllerTest;
7+
import eatda.domain.member.Member;
78
import io.restassured.http.ContentType;
89
import org.junit.jupiter.api.Nested;
910
import org.junit.jupiter.api.Test;
1011
import org.springframework.http.HttpHeaders;
1112

1213
class MemberControllerTest extends BaseControllerTest {
1314

15+
@Nested
16+
class GetMember {
17+
18+
@Test
19+
void 회원_정보를_조회할_수_있다() {
20+
Member member = memberGenerator.generateRegisteredMember(
21+
"123", "[email protected]", "test-nickname", "01012345678");
22+
String accessToken = jwtManager.issueAccessToken(member.getId());
23+
24+
MemberResponse response = given()
25+
.header(HttpHeaders.AUTHORIZATION, accessToken)
26+
.when().get("/api/member")
27+
.then()
28+
.statusCode(200)
29+
.extract().as(MemberResponse.class);
30+
31+
assertAll(
32+
() -> assertThat(response.id()).isEqualTo(member.getId()),
33+
() -> assertThat(response.nickname()).isEqualTo(member.getNickname()),
34+
() -> assertThat(response.phoneNumber()).isEqualTo(member.getPhoneNumber()),
35+
() -> assertThat(response.isSignUp()).isFalse()
36+
);
37+
}
38+
}
39+
1440
@Nested
1541
class CheckNickname {
1642

src/test/java/eatda/document/member/MemberDocumentTest.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,62 @@
3030

3131
public class MemberDocumentTest extends BaseDocumentTest {
3232

33+
@Nested
34+
class GetMember {
35+
36+
RestDocsRequest requestDocument = request()
37+
.tag(Tag.MEMBER_API)
38+
.summary("회원 정보 조회")
39+
.requestHeader(
40+
headerWithName(HttpHeaders.AUTHORIZATION).description("액세스 토큰")
41+
);
42+
43+
RestDocsResponse responseDocument = response()
44+
.responseBodyField(
45+
fieldWithPath("id").type(NUMBER).description("회원 식별자"),
46+
fieldWithPath("email").type(STRING).description("회원 이메일"),
47+
fieldWithPath("isSignUp").type(BOOLEAN).description("회원 가입 요청 여부 (false 고정)"),
48+
fieldWithPath("nickname").type(STRING).description("회원 닉네임").optional(),
49+
fieldWithPath("phoneNumber").type(STRING).description("회원 전화번호 ex) 01012345678").optional(),
50+
fieldWithPath("optInMarketing").type(BOOLEAN).description("마케팅 동의 여부").optional()
51+
);
52+
53+
@Test
54+
void 회원_정보_조회_성공() {
55+
MemberResponse response = new MemberResponse(1L, "[email protected]", false, "test-nickname", "01012345678", true);
56+
doReturn(response).when(memberService).getMember(anyLong());
57+
58+
var document = document("member/get", 200)
59+
.request(requestDocument)
60+
.response(responseDocument)
61+
.build();
62+
63+
given(document)
64+
.contentType(ContentType.JSON)
65+
.header(HttpHeaders.AUTHORIZATION, accessToken())
66+
.when().get("/api/member")
67+
.then().statusCode(200);
68+
}
69+
70+
@EnumSource(value = BusinessErrorCode.class,
71+
names = {"UNAUTHORIZED_MEMBER", "EXPIRED_TOKEN", "INVALID_MEMBER_ID"})
72+
@ParameterizedTest
73+
void 회원_정보_조회_실패(BusinessErrorCode errorCode) {
74+
doThrow(new BusinessException(errorCode)).when(memberService).getMember(anyLong());
75+
76+
var document = document("member/get", errorCode)
77+
.request(requestDocument)
78+
.response(ERROR_RESPONSE)
79+
.build();
80+
81+
given(document)
82+
.contentType(ContentType.JSON)
83+
.header(HttpHeaders.AUTHORIZATION, accessToken())
84+
.when().get("/api/member")
85+
.then().statusCode(errorCode.getStatus().value());
86+
}
87+
}
88+
3389
@Nested
3490
class CheckNickname {
3591

src/test/java/eatda/service/member/MemberServiceTest.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,35 @@ class MemberServiceTest extends BaseServiceTest {
2020
@Autowired
2121
private MemberService memberService;
2222

23+
@Nested
24+
class GetMember {
25+
26+
@Test
27+
void 회원_정보를_조회할_수_있다() {
28+
Member member = memberGenerator.generateRegisteredMember("123", "[email protected]", "nickname", "01012345678");
29+
30+
MemberResponse response = memberService.getMember(member.getId());
31+
32+
assertAll(
33+
() -> assertThat(response.id()).isEqualTo(member.getId()),
34+
() -> assertThat(response.nickname()).isEqualTo(member.getNickname()),
35+
() -> assertThat(response.phoneNumber()).isEqualTo(member.getPhoneNumber()),
36+
() -> assertThat(response.optInMarketing()).isEqualTo(member.isOptInMarketing()),
37+
() -> assertThat(response.isSignUp()).isFalse()
38+
);
39+
}
40+
41+
@Test
42+
void 존재하지_않는_회원의_정보를_조회하면_예외가_발생한다() {
43+
long nonExistentMemberId = 999L;
44+
45+
BusinessException exception = assertThrows(BusinessException.class,
46+
() -> memberService.getMember(nonExistentMemberId));
47+
48+
assertThat(exception.getErrorCode()).isEqualTo(BusinessErrorCode.INVALID_MEMBER_ID);
49+
}
50+
}
51+
2352
@Nested
2453
class ValidateNickname {
2554

@@ -45,7 +74,7 @@ class ValidateNickname {
4574
@Test
4675
void 중복된_닉네임이_있으면_예외가_발생한다() {
4776
memberGenerator.generate("123", "[email protected]", "duplicate-nickname");
48-
Member member = memberGenerator.generate("456", "[email protected]","another-nickname");
77+
Member member = memberGenerator.generate("456", "[email protected]", "another-nickname");
4978
String newNickname = "duplicate-nickname";
5079

5180
BusinessException exception = assertThrows(BusinessException.class,
@@ -60,8 +89,8 @@ class ValidatePhoneNumber {
6089

6190
@Test
6291
void 중복되지_않은_전화번호이면_예외가_발생하지_않는다() {
63-
memberGenerator.generate("123", "[email protected]","nickname");
64-
Member member = memberGenerator.generate("456", "[email protected]","unique-nickname");
92+
memberGenerator.generate("123", "[email protected]", "nickname");
93+
Member member = memberGenerator.generate("456", "[email protected]", "unique-nickname");
6594
String newPhoneNumber = "01012345678";
6695

6796
assertThatCode(() -> memberService.validatePhoneNumber(newPhoneNumber, member.getId()))
@@ -80,7 +109,8 @@ class ValidatePhoneNumber {
80109
@Test
81110
void 중복된_전화번호가_있으면_예외가_발생한다() {
82111
memberGenerator.generateRegisteredMember("nickname1", "[email protected]", "123", "01012345678");
83-
Member member = memberGenerator.generateRegisteredMember("nickname2", "[email protected]", "456", "01087654321");
112+
Member member = memberGenerator.generateRegisteredMember("nickname2", "[email protected]", "456",
113+
"01087654321");
84114
String newPhoneNumber = "01012345678";
85115

86116
BusinessException exception = assertThrows(BusinessException.class,

0 commit comments

Comments
 (0)