From e145d22d9d091fd5512b17be9fcd6bc00191d6a8 Mon Sep 17 00:00:00 2001 From: Son Gahyun <77109954+hyun2371@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:43:53 +0900 Subject: [PATCH] =?UTF-8?q?[refactor=20#156]=20=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EB=AA=A9=EB=A1=9D=20API=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EC=B1=84=ED=8C=85=20=ED=8C=8C=ED=8A=B8=EB=84=88=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20(#157)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [feat] : 채팅 요청에 createdAt 필드 추가 * [feat] : 채팅 요청 테스트 픽스쳐에 createdAt 추가 * [feat] : 채팅 파트너 구하는 로직 DTO에 추가 * [refactor] : 채팅 파트너 구하는 로직 DTO로 이동 * [style] : 코드 리포멧팅 * [test] : createdAt 포함된 testFixture 사용 --- .../chat_inquiry/dto/ChatInquiryResponse.java | 41 ++++++++++--------- .../ChatInquiryQueryRepositoryImpl.java | 22 +--------- .../service/ChatInquiryServiceTest.java | 6 +-- .../common/fixture/ChatInquiryFixture.java | 3 ++ 4 files changed, 29 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/dnd/gongmuin/chat_inquiry/dto/ChatInquiryResponse.java b/src/main/java/com/dnd/gongmuin/chat_inquiry/dto/ChatInquiryResponse.java index 87bdb0e9..7e827ae7 100644 --- a/src/main/java/com/dnd/gongmuin/chat_inquiry/dto/ChatInquiryResponse.java +++ b/src/main/java/com/dnd/gongmuin/chat_inquiry/dto/ChatInquiryResponse.java @@ -1,7 +1,7 @@ package com.dnd.gongmuin.chat_inquiry.dto; -import com.dnd.gongmuin.chat_inquiry.domain.InquiryStatus; -import com.dnd.gongmuin.member.domain.JobGroup; +import com.dnd.gongmuin.chat_inquiry.domain.ChatInquiry; +import com.dnd.gongmuin.member.domain.Member; import com.dnd.gongmuin.question_post.dto.response.MemberInfo; import com.querydsl.core.annotations.QueryProjection; @@ -10,30 +10,31 @@ public record ChatInquiryResponse( String inquiryMessage, String inquiryStatus, boolean isInquirer, - MemberInfo chatPartner + MemberInfo chatPartner, + String createdAt ) { @QueryProjection public ChatInquiryResponse( - Long chatInquiryId, - String inquiryMessage, - InquiryStatus inquiryStatus, - boolean isInquirer, - Long partnerId, - String partnerNickname, - JobGroup partnerJobGroup, - int partnerProfileImageNo + ChatInquiry chatInquiry, + boolean isInquirer ) { this( - chatInquiryId, - inquiryMessage, - inquiryStatus.getLabel(), + chatInquiry.getId(), + chatInquiry.getMessage(), + chatInquiry.getStatus().getLabel(), isInquirer, - new MemberInfo( - partnerId, - partnerNickname, - partnerJobGroup.getLabel(), - partnerProfileImageNo - ) + createPartnerInfo(isInquirer, chatInquiry), + chatInquiry.getCreatedAt().toString() + ); + } + + private static MemberInfo createPartnerInfo(boolean isInquirer, ChatInquiry chatInquiry) { + Member partner = isInquirer ? chatInquiry.getAnswerer() : chatInquiry.getInquirer(); + return new MemberInfo( + partner.getId(), + partner.getNickname(), + partner.getJobGroup().getLabel(), + partner.getProfileImageNo() ); } } diff --git a/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java b/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java index 0510d2df..b8fa741a 100644 --- a/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java +++ b/src/main/java/com/dnd/gongmuin/chat_inquiry/repository/ChatInquiryQueryRepositoryImpl.java @@ -26,29 +26,11 @@ public class ChatInquiryQueryRepositoryImpl implements ChatInquiryQueryRepositor public Slice getChatInquiresByMember(Member member, Pageable pageable) { List content = queryFactory .select(new QChatInquiryResponse( - chatInquiry.id, - chatInquiry.message, - chatInquiry.status, + chatInquiry, new CaseBuilder() .when(chatInquiry.inquirer.id.eq(member.getId())) .then(true) - .otherwise(false), - new CaseBuilder() - .when(chatInquiry.inquirer.id.eq(member.getId())) - .then(chatInquiry.answerer.id) - .otherwise(chatInquiry.inquirer.id), - new CaseBuilder() - .when(chatInquiry.inquirer.id.eq(member.getId())) - .then(chatInquiry.answerer.nickname) - .otherwise(chatInquiry.inquirer.nickname), - new CaseBuilder() - .when(chatInquiry.inquirer.id.eq(member.getId())) - .then(chatInquiry.answerer.jobGroup) - .otherwise(chatInquiry.inquirer.jobGroup), - new CaseBuilder() - .when(chatInquiry.inquirer.id.eq(member.getId())) - .then(chatInquiry.answerer.profileImageNo) - .otherwise(chatInquiry.inquirer.profileImageNo) + .otherwise(false) )) .from(chatInquiry) .where(chatInquiry.inquirer.id.eq(member.getId()) diff --git a/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java b/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java index 632bc320..7ec73484 100644 --- a/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java +++ b/src/test/java/com/dnd/gongmuin/chat_inquiry/service/ChatInquiryServiceTest.java @@ -141,10 +141,10 @@ void getChatInquiresByMember() { Long chatInquiryId = 1L; Member targetMember = MemberFixture.member(1L); Member partner = MemberFixture.member(2L); - ChatInquiryResponse chatInquiryResponse = new ChatInquiryResponse( - chatInquiryId, INQUIRY_MESSAGE, InquiryStatus.PENDING, true, partner.getId(), - partner.getNickname(), partner.getJobGroup(), partner.getProfileImageNo() + ChatInquiry chatInquiry = ChatInquiryFixture.chatInquiry( + 1L, QuestionPostFixture.questionPost(targetMember), targetMember, partner, INQUIRY_MESSAGE ); + ChatInquiryResponse chatInquiryResponse = new ChatInquiryResponse(chatInquiry, true); given(chatInquiryRepository.getChatInquiresByMember(targetMember, pageRequest)) .willReturn(new SliceImpl<>(List.of(chatInquiryResponse), pageRequest, false)); diff --git a/src/test/java/com/dnd/gongmuin/common/fixture/ChatInquiryFixture.java b/src/test/java/com/dnd/gongmuin/common/fixture/ChatInquiryFixture.java index 4cd9a170..e9ce9079 100644 --- a/src/test/java/com/dnd/gongmuin/common/fixture/ChatInquiryFixture.java +++ b/src/test/java/com/dnd/gongmuin/common/fixture/ChatInquiryFixture.java @@ -1,5 +1,7 @@ package com.dnd.gongmuin.common.fixture; +import java.time.LocalDateTime; + import org.springframework.test.util.ReflectionTestUtils; import com.dnd.gongmuin.chat_inquiry.domain.ChatInquiry; @@ -40,6 +42,7 @@ public static ChatInquiry chatInquiry( message ); ReflectionTestUtils.setField(chatInquiry, "id", id); + ReflectionTestUtils.setField(chatInquiry, "createdAt", LocalDateTime.now()); return chatInquiry; } }