Skip to content

Commit

Permalink
✨ [STMT-89] 멤버 프로필 조회 API 응답 값에 포도알 개수 추가 (#169)
Browse files Browse the repository at this point in the history
* ✨ [STMT-173] 멤버의 포도알 개수 조회 쿼리 구현

* ✨ [STMT-89] 멤버 프로필 조회 응답 값에 포도알 개수 추가

* ✅ [STMT-89] 멤버 프로필 조회 단위, API 테스트에 포도알 개수 반영
  • Loading branch information
05AM authored Jan 6, 2025
1 parent b274366 commit 51a7b2c
Show file tree
Hide file tree
Showing 12 changed files with 42 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public ResponseEntity<ApiResponse<MemberProfileResponse>> getMyProfile(
@AuthenticationPrincipal LoginMember member
) {
MemberProfileResponse response = memberProfileUseCase.getProfileById(member.getMember().getId());

return new ResponseEntity<>(
ApiResponse.success(HttpStatus.OK.value(), "내 프로필 조회에 성공했습니다.", response),
HttpStatus.OK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public record MemberProfileResponse(
String region,
String profession,
String tier,
double experience
) {
double experience,
Integer grapeCount
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
@Component
public class MemberUseCaseMapper {

public MemberProfileResponse toProfileResponse(Member member) {
public MemberProfileResponse toProfileResponse(Member member, int grapeCount) {
return MemberProfileResponse.builder()
.id(member.getId())
.image(member.getImage())
Expand All @@ -16,6 +16,7 @@ public MemberProfileResponse toProfileResponse(Member member) {
.profession(member.getProfession().getName())
.tier(member.getLevel().getTier().getName())
.experience(member.getLevel().getExperience())
.grapeCount(grapeCount)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import com.stumeet.server.member.domain.Member;
import com.stumeet.server.profession.application.port.in.ProfessionQueryUseCase;
import com.stumeet.server.profession.domain.Profession;
import com.stumeet.server.studymember.application.port.in.MemberGrapeQueryUseCase;

import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -25,8 +27,11 @@ public class MemberProfileService implements MemberProfileUseCase {
private final ProfessionQueryUseCase professionQueryUseCase;
private final FileUploadUseCase fileUploadUseCase;
private final MemberValidationUseCase memberValidationUseCase;
private final MemberGrapeQueryUseCase memberGrapeQueryUseCase;

private final MemberCommandPort memberCommandPort;
private final MemberQueryPort memberQueryPort;

private final MemberUseCaseMapper memberUseCaseMapper;


Expand Down Expand Up @@ -74,7 +79,8 @@ public void updateProfile(Member member, MemberUpdateCommand request) {
@Override
public MemberProfileResponse getProfileById(Long id) {
Member member = memberQueryPort.getById(id);
return memberUseCaseMapper.toProfileResponse(member);
}
int grapeCount = memberGrapeQueryUseCase.countMemberGrape(id);

return memberUseCaseMapper.toProfileResponse(member, grapeCount);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@
public interface GrapeQueryPort {

Page<Grape> findPageByMemberId(Long memberId, int page, int size);

int countMemberGrapes(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ public Page<Grape> findPageByMemberId(Long memberId, int page, int size) {
return grapePersistenceMapper.toDomains(entities);
}

@Override
public int countMemberGrapes(Long memberId) {
return jpaGrapeRepository.countByMemberId(memberId);
}

@Override
public void save(Grape grape) {
GrapeJpaEntity entity = grapePersistenceMapper.toEntity(grape);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@
public interface JpaGrapeRepository extends JpaRepository<GrapeJpaEntity, Long> {

Page<GrapeJpaEntity> findAllByMemberIdOrderByCreatedAtDesc(Long memberId, Pageable pageable);

int countByMemberId(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@
public interface MemberGrapeQueryUseCase {

GrapeResponses findMemberGrapes(Long memberId, int page, int size);

int countMemberGrape(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ public GrapeResponses findMemberGrapes(Long memberId, int page, int size) {
.build();
}

@Override
public int countMemberGrape(Long memberId) {
return grapeQueryPort.countMemberGrapes(memberId);
}

private List<GrapeResponse> mapToGrapeResponse(Page<Grape> pages) {
return pages.map(grape -> GrapeResponse.builder()
.id(grape.getId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ void successTest() throws Exception {
fieldWithPath("data.region").description("지역"),
fieldWithPath("data.profession").description("분야 이름"),
fieldWithPath("data.tier").description("회원 레벨 - 랭크"),
fieldWithPath("data.experience").description("회원 레벨 - 경험치")
fieldWithPath("data.experience").description("회원 레벨 - 경험치"),
fieldWithPath("data.grapeCount").description("포도알 개수")
)));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import com.stumeet.server.stub.FileStub;
import com.stumeet.server.stub.MemberStub;
import com.stumeet.server.stub.ProfessionStub;
import com.stumeet.server.studymember.application.port.in.MemberGrapeQueryUseCase;
import com.stumeet.server.template.UnitTest;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand All @@ -22,7 +24,6 @@
import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.then;


class MemberProfileServiceTest extends UnitTest {

@InjectMocks
Expand All @@ -37,6 +38,9 @@ class MemberProfileServiceTest extends UnitTest {
@Mock
private ProfessionQueryUseCase professionQueryUseCase;

@Mock
private MemberGrapeQueryUseCase memberGrapeQueryUseCase;

@Mock
private MemberQueryPort memberQueryPort;

Expand Down Expand Up @@ -72,16 +76,18 @@ class GetProfileById {
void successTest() {
Member member = MemberStub.getMember();
MemberProfileResponse want = MemberStub.getMemberProfileResponse(member);
int grapeCount = 115;

given(memberQueryPort.getById(member.getId()))
.willReturn(member);
given(memberUseCaseMapper.toProfileResponse(member))
given(memberGrapeQueryUseCase.countMemberGrape(member.getId()))
.willReturn(grapeCount);
given(memberUseCaseMapper.toProfileResponse(member, grapeCount))
.willReturn(want);

MemberProfileResponse got = memberProfileService.getProfileById(member.getId());

assertThat(got).usingRecursiveComparison().isEqualTo(want);
}
}

}
1 change: 1 addition & 0 deletions src/test/java/com/stumeet/server/stub/MemberStub.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ public static MemberProfileResponse getMemberProfileResponse(Member member) {
.profession(member.getProfession().getName())
.tier(member.getLevel().getTier().getName())
.experience(member.getLevel().getExperience())
.grapeCount(115)
.build();
}

Expand Down

0 comments on commit 51a7b2c

Please sign in to comment.