Skip to content

Commit 733896b

Browse files
authored
[refactor/#289] 본인 정보 조회 api 이메일 반환 추가 (#290)
* refactor: 본인 정보 조회 email 필드 추가 * test/refactor: 컨트롤러/서비스 테스트 수정 * fix: spotless 포맷팅 규칙 준수
1 parent 29c96ec commit 733896b

8 files changed

Lines changed: 38 additions & 18 deletions

File tree

clokey-api/src/main/java/org/clokey/domain/member/controller/MemberController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public BaseResponse<SliceResponse<FollowMemberResponse>> getFollows(
132132
@Operation(
133133
operationId = "Member_getMemberInfo",
134134
summary = "회원 조회 API",
135-
description = "입력받은 codive ID에 해당하는 회원의 정보를 조회합니다.")
135+
description = "입력받은 member ID에 해당하는 회원의 정보를 조회합니다.")
136136
public BaseResponse<MemberInfoResponse> getMemberInfo(@PathVariable Long memberId) {
137137
return BaseResponse.onSuccess(
138138
GlobalBaseSuccessCode.OK, memberService.getMemberInfo(memberId));
@@ -143,7 +143,7 @@ public BaseResponse<MemberInfoResponse> getMemberInfo(@PathVariable Long memberI
143143
operationId = "Member_getMyInfo",
144144
summary = "내 정보 조회 API",
145145
description = "로그인한 사용자의 본인 정보를 조회합니다.")
146-
public BaseResponse<MemberInfoResponse> getMyInfo() {
146+
public BaseResponse<MyInfoResponse> getMyInfo() {
147147
return BaseResponse.onSuccess(GlobalBaseSuccessCode.OK, memberService.getMyInfo());
148148
}
149149
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.clokey.domain.member.dto.response;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
5+
public record MyInfoResponse(
6+
@Schema(description = "조회할 멤버의 memberId", example = "1L") Long memberId,
7+
@Schema(description = "조회할 멤버의 닉네임", example = "닉네임123") String nickname,
8+
@Schema(description = "조회할 멤버의 한줄소개", example = "코디브 너무 좋아~~ㅋㅋ") String bio,
9+
@Schema(description = "조회할 멤버의 이메일", example = "codive@example.com") String email,
10+
@Schema(description = "조회할 멤버의 팔로워 수", example = "150") Long followerCount,
11+
@Schema(description = "조회할 멤버의 팔로잉 수", example = "150") Long followingCount,
12+
@Schema(
13+
description = "조회할 멤버의 프로필 이미지 URL",
14+
example = "https://example.com/profile/john.jpg")
15+
String profileImageUrl,
16+
@Schema(description = "조회할 멤버가 공개 계정인지?", example = "true") boolean isPublic,
17+
@Schema(description = "조회할 멤버가 요청자 본인인지?", example = "true") boolean isMe) {}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package org.clokey.domain.member.repository;
22

33
import org.clokey.domain.member.dto.response.MemberInfoResponse;
4+
import org.clokey.domain.member.dto.response.MyInfoResponse;
45

56
public interface MemberRepositoryCustom {
67

78
public MemberInfoResponse findMemberInfoById(Long currentId, Long targetId);
89

9-
public MemberInfoResponse findMyInfoById(Long memberId);
10+
public MyInfoResponse findMyInfoById(Long memberId);
1011
}

clokey-api/src/main/java/org/clokey/domain/member/repository/MemberRepositoryImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.querydsl.jpa.impl.JPAQueryFactory;
1313
import lombok.RequiredArgsConstructor;
1414
import org.clokey.domain.member.dto.response.MemberInfoResponse;
15+
import org.clokey.domain.member.dto.response.MyInfoResponse;
1516
import org.clokey.member.entity.QBlock;
1617
import org.clokey.member.entity.QFollow;
1718
import org.clokey.member.enums.Visibility;
@@ -61,14 +62,15 @@ public MemberInfoResponse findMemberInfoById(Long currentId, Long targetId) {
6162
}
6263

6364
@Override
64-
public MemberInfoResponse findMyInfoById(Long memberId) {
65+
public MyInfoResponse findMyInfoById(Long memberId) {
6566
return queryFactory
6667
.select(
6768
Projections.constructor(
68-
MemberInfoResponse.class,
69+
MyInfoResponse.class,
6970
member.id,
7071
member.nickname,
7172
member.bio,
73+
member.email,
7274
JPAExpressions.select(follow.count())
7375
.from(follow)
7476
.where(
@@ -84,7 +86,6 @@ public MemberInfoResponse findMyInfoById(Long memberId) {
8486
.when(member.visibility.eq(Visibility.PUBLIC))
8587
.then(true)
8688
.otherwise(false),
87-
Expressions.FALSE,
8889
Expressions.TRUE))
8990
.from(member)
9091
.where(member.id.eq(memberId))

clokey-api/src/main/java/org/clokey/domain/member/service/MemberService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ SliceResponse<FollowMemberResponse> getFollows(
2828

2929
MemberInfoResponse getMemberInfo(Long memberId);
3030

31-
MemberInfoResponse getMyInfo();
31+
MyInfoResponse getMyInfo();
3232
}

clokey-api/src/main/java/org/clokey/domain/member/service/MemberServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public MemberInfoResponse getMemberInfo(Long memberId) {
156156
}
157157

158158
@Override
159-
public MemberInfoResponse getMyInfo() {
159+
public MyInfoResponse getMyInfo() {
160160
Member currentMember = memberUtil.getCurrentMember();
161161
return memberRepository.findMyInfoById(currentMember.getId());
162162
}

clokey-api/src/test/java/org/clokey/domain/member/controller/MemberControllerTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -576,16 +576,16 @@ class 내_정보_조회_요청_시 {
576576
@Test
577577
void 유효한_요청이면_내_정보를_반환한다() throws Exception {
578578
// given
579-
MemberInfoResponse result =
580-
new MemberInfoResponse(
579+
MyInfoResponse result =
580+
new MyInfoResponse(
581581
1L,
582582
"myNickname",
583583
"내 한줄소개",
584+
"me@example.com",
584585
10L,
585586
5L,
586587
"https://img.example.com/me.jpg",
587588
true,
588-
false,
589589
true);
590590
given(memberService.getMyInfo()).willReturn(result);
591591

@@ -599,9 +599,9 @@ class 내_정보_조회_요청_시 {
599599
.andExpect(jsonPath("$.message").value("성공입니다."))
600600
.andExpect(jsonPath("$.result.memberId").value(1L))
601601
.andExpect(jsonPath("$.result.nickname").value("myNickname"))
602+
.andExpect(jsonPath("$.result.email").value("me@example.com"))
602603
.andExpect(jsonPath("$.result.isPublic").value(true))
603-
.andExpect(jsonPath("$.result.isMe").value(true))
604-
.andExpect(jsonPath("$.result.isFollowing").value(false));
604+
.andExpect(jsonPath("$.result.isMe").value(true));
605605
}
606606
}
607607
}

clokey-api/src/test/java/org/clokey/domain/member/service/MemberServiceTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.clokey.domain.member.dto.response.BlockedMemberResponse;
1313
import org.clokey.domain.member.dto.response.FollowMemberResponse;
1414
import org.clokey.domain.member.dto.response.MemberInfoResponse;
15+
import org.clokey.domain.member.dto.response.MyInfoResponse;
1516
import org.clokey.domain.member.dto.response.MyselfCheckResponse;
1617
import org.clokey.domain.member.exception.MemberErrorCode;
1718
import org.clokey.domain.member.repository.BlockRepository;
@@ -835,21 +836,21 @@ void setUp() {
835836
@Test
836837
void 유효한_요청이면_내_정보를_반환한다() {
837838
// when
838-
MemberInfoResponse response = memberService.getMyInfo();
839+
MyInfoResponse response = memberService.getMyInfo();
839840

840841
// then
841842
Assertions.assertAll(
842843
() -> assertThat(response.memberId()).isEqualTo(1L),
843844
() -> assertThat(response.nickname()).isEqualTo("testNickName1"),
845+
() -> assertThat(response.email()).isEqualTo("testEmail1"),
844846
() -> assertThat(response.isPublic()).isTrue(),
845-
() -> assertThat(response.isMe()).isTrue(),
846-
() -> assertThat(response.isFollowing()).isFalse());
847+
() -> assertThat(response.isMe()).isTrue());
847848
}
848849

849850
@Test
850851
void 차단_관계인_멤버는_팔로워_수에_집계하지_않는다() {
851852
// when - member1 팔로워: member2, member3. member1이 member3 차단 → 1명만 집계
852-
MemberInfoResponse response = memberService.getMyInfo();
853+
MyInfoResponse response = memberService.getMyInfo();
853854

854855
// then
855856
assertThat(response.followerCount()).isOne();
@@ -858,7 +859,7 @@ void setUp() {
858859
@Test
859860
void 차단_관계인_멤버는_팔로잉_수에_집계하지_않는다() {
860861
// when - member1 팔로잉: member2, member3. member1이 member3 차단 → 1명만 집계
861-
MemberInfoResponse response = memberService.getMyInfo();
862+
MyInfoResponse response = memberService.getMyInfo();
862863

863864
// then
864865
assertThat(response.followingCount()).isOne();

0 commit comments

Comments
 (0)