From be17867ad7f0fff02c9f4997598431e87bc84611 Mon Sep 17 00:00:00 2001 From: young970 Date: Wed, 31 Jan 2024 19:05:15 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Fix]:=20=EC=A1=B4=EC=9E=AC=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=EC=8B=9C=20=EB=B0=9C=EC=83=9D=ED=95=98?= =?UTF-8?q?=EB=8A=94=20NPE=20=ED=95=B4=EA=B2=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (추가로 테스트 코드 수정) --- .../common/mapper/RepositoryDtoMapper.java | 16 ++++++++++++++++ .../space/querydsl/SpaceQueryDslRepository.java | 11 ++--------- .../space/service/DefaultSpaceServiceTest.java | 15 +++++++-------- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java b/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java index 6cacd2e1..becb0ba2 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java @@ -1,5 +1,8 @@ package com.tenten.linkhub.domain.space.repository.common.mapper; +import com.tenten.linkhub.domain.space.common.SpaceCursorPageRequest; +import com.tenten.linkhub.domain.space.common.SpaceCursorSlice; +import com.tenten.linkhub.domain.space.model.space.Space; import com.tenten.linkhub.domain.space.model.space.SpaceImage; import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndOwnerNickName; import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; @@ -7,6 +10,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; @Component @@ -29,4 +33,16 @@ public List toSpaceAndSpaceImageOwnerNickNames( .collect(Collectors.toList()); } + public SpaceCursorSlice toSpaceCursorSlice(List contents, SpaceCursorPageRequest pageable, boolean hasNext){ + Space lastSpace = contents.isEmpty() ? null : contents.get(contents.size() - 1).space(); + + return SpaceCursorSlice.of( + Objects.isNull(lastSpace) ? null : lastSpace.getFavoriteCount(), + Objects.isNull(lastSpace) ? null : lastSpace.getId(), + pageable.pageSize(), + hasNext, + contents + ); + } + } diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java index b465cada..4e2ab44d 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Objects; import static com.tenten.linkhub.domain.member.model.QMember.member; import static com.tenten.linkhub.domain.space.model.space.QSpace.space; @@ -62,15 +63,7 @@ public SpaceCursorSlice findPublicSpacesJoinSpa hasNext = true; } - Space lastSpace = contents.get(contents.size() - 1).space(); - - return SpaceCursorSlice.of( - lastSpace.getFavoriteCount(), - lastSpace.getId(), - pageable.pageSize(), - hasNext, - contents - ); + return mapper.toSpaceCursorSlice(contents, pageable, hasNext); } public Slice searchPublicSpacesJoinSpaceImageByCondition(QueryCondition condition) { diff --git a/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java b/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java index 79d6aa6c..eade612e 100644 --- a/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java +++ b/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java @@ -157,9 +157,9 @@ void findMemberSpacesByQuery_emptyKeyWord_emptyFilter() { List content = response.responses().getContent(); assertThat(content.size()).isEqualTo(2); - assertThat(content.get(1).spaceName()).isEqualTo("세번째 스페이스"); - assertThat(content.get(1).spaceImagePath()).isEqualTo("https://testimage3"); - assertThat(content.get(1).ownerNickName()).isEqualTo("백둥이"); + assertThat(content.get(0).spaceName()).isEqualTo("세번째 스페이스"); + assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage3"); + assertThat(content.get(0).ownerNickName()).isEqualTo("백둥이"); } @Test @@ -176,12 +176,11 @@ void findMemberSpacesByQuery_emptyKeyWord_emptyFilter_findMySpaces() { List content = response.responses().getContent(); assertThat(content.size()).isEqualTo(2); - assertThat(content.get(0).spaceName()).isEqualTo("첫번째 스페이스"); - assertThat(content.get(0).description()).isEqualTo("첫번째 스페이스 소개글"); - assertThat(content.get(0).category()).isEqualTo(Category.KNOWLEDGE_ISSUE_CAREER); - assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage1"); + assertThat(content.get(0).spaceName()).isEqualTo("두번째 스페이스"); + assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage2"); assertThat(content.get(0).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); - assertThat(content.get(1).spaceName()).isEqualTo("두번째 스페이스"); + assertThat(content.get(1).spaceName()).isEqualTo("첫번째 스페이스"); + assertThat(content.get(1).spaceImagePath()).isEqualTo("https://testimage1"); assertThat(content.get(1).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); } From 5588b1fcc8e2bf6503e2d33e19c147fda91528b1 Mon Sep 17 00:00:00 2001 From: young970 Date: Wed, 31 Jan 2024 19:07:54 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Docs]:=20=EC=8A=A4=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=ED=95=84=ED=84=B0=20=EC=A1=B0=ED=9A=8CAPI=20?= =?UTF-8?q?=EC=8A=A4=EC=9B=A8=EA=B1=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/space/PublicSpacesFindWithFilterApiRequest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java index 3b4faf8c..e024cf30 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java +++ b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java @@ -4,10 +4,10 @@ import io.swagger.v3.oas.annotations.media.Schema; public record PublicSpacesFindWithFilterApiRequest( - @Schema(title = "마지막 favoriteCount", example = "1") + @Schema(title = "마지막 favoriteCount", example = "0") Long lastFavoriteCount, - @Schema(title = "마지막 spaceId", example = "1") + @Schema(title = "마지막 spaceId", example = "62") Long lastSpaceId, @Schema(title = "페이지 크기", example = "10")