diff --git a/backend/src/main/java/com/twtw/backend/domain/group/dto/response/GroupInfoResponse.java b/backend/src/main/java/com/twtw/backend/domain/group/dto/response/GroupInfoResponse.java index 1f0a990e..3869f978 100644 --- a/backend/src/main/java/com/twtw/backend/domain/group/dto/response/GroupInfoResponse.java +++ b/backend/src/main/java/com/twtw/backend/domain/group/dto/response/GroupInfoResponse.java @@ -1,9 +1,12 @@ package com.twtw.backend.domain.group.dto.response; +import com.twtw.backend.domain.member.dto.response.MemberResponse; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import java.util.List; import java.util.UUID; @Getter @@ -14,4 +17,5 @@ public class GroupInfoResponse { private UUID leaderId; private String name; private String groupImage; + private List groupMembers; } diff --git a/backend/src/main/java/com/twtw/backend/domain/group/mapper/GroupMapper.java b/backend/src/main/java/com/twtw/backend/domain/group/mapper/GroupMapper.java index d5d7b528..8ef36ba3 100644 --- a/backend/src/main/java/com/twtw/backend/domain/group/mapper/GroupMapper.java +++ b/backend/src/main/java/com/twtw/backend/domain/group/mapper/GroupMapper.java @@ -5,6 +5,7 @@ import com.twtw.backend.domain.group.dto.response.ShareInfoResponse; import com.twtw.backend.domain.group.entity.Group; import com.twtw.backend.domain.group.entity.GroupMember; +import com.twtw.backend.domain.member.dto.response.MemberResponse; import com.twtw.backend.domain.member.entity.Member; import org.mapstruct.IterableMapping; @@ -21,7 +22,17 @@ public interface GroupMapper { @Mapping(target = "groupImage", source = "groupDto.groupImage") Group toGroupEntity(MakeGroupRequest groupDto, Member leader); + @Named("groupMemberToMemberResponse") + @Mapping(target = "id", source = "groupMember.member.id") + @Mapping(target = "nickname", source = "groupMember.member.nickname") + MemberResponse toGroupMemberResponse(GroupMember groupMember); + + @Named("groupMemberToMemberResponseList") + @IterableMapping(qualifiedByName = "groupMemberToMemberResponse") + List toGroupMemberResponseList(List groupMemberList); + @Mapping(target = "groupId", source = "id") + @Mapping(target = "groupMembers", qualifiedByName = "groupMemberToMemberResponseList") GroupInfoResponse toGroupInfo(Group group); @Mapping(target = "groupId", source = "group.id") diff --git a/backend/src/test/java/com/twtw/backend/domain/group/controller/GroupControllerTest.java b/backend/src/test/java/com/twtw/backend/domain/group/controller/GroupControllerTest.java index 365d72e0..0b0a5ebc 100644 --- a/backend/src/test/java/com/twtw/backend/domain/group/controller/GroupControllerTest.java +++ b/backend/src/test/java/com/twtw/backend/domain/group/controller/GroupControllerTest.java @@ -22,6 +22,7 @@ import com.twtw.backend.domain.group.dto.response.ShareInfoResponse; import com.twtw.backend.domain.group.dto.response.SimpleGroupInfoResponse; import com.twtw.backend.domain.group.service.GroupService; +import com.twtw.backend.domain.member.dto.response.MemberResponse; import com.twtw.backend.support.docs.RestDocsTest; import org.junit.jupiter.api.DisplayName; @@ -49,7 +50,10 @@ void getGroupById() throws Exception { UUID.fromString("550e8400-e29b-41d4-a716-446655440000"), UUID.randomUUID(), "HDJ", - "GROUP-IMAGE"); + "GROUP-IMAGE", + List.of( + new MemberResponse(UUID.randomUUID(), "DEAN"), + new MemberResponse(UUID.randomUUID(), "ZION-T"))); given(groupService.getGroupById(UUID.fromString("550e8400-e29b-41d4-a716-446655440000"))) .willReturn(expected); @@ -75,7 +79,10 @@ void makeGroup() throws Exception { UUID.fromString("550e8400-e29b-41d4-a716-446655440000"), UUID.randomUUID(), "HDJ", - "GROUP-IMAGE"); + "GROUP-IMAGE", + List.of( + new MemberResponse(UUID.randomUUID(), "DEAN"), + new MemberResponse(UUID.randomUUID(), "ZION-T"))); given(groupService.makeGroup(any())).willReturn(expected); final ResultActions perform = @@ -128,7 +135,13 @@ void inviteGroup() throws Exception { // given final GroupInfoResponse expected = new GroupInfoResponse( - UUID.randomUUID(), UUID.randomUUID(), "홍담진", "http://someUrlToS3"); + UUID.randomUUID(), + UUID.randomUUID(), + "홍담진", + "http://someUrlToS3", + List.of( + new MemberResponse(UUID.randomUUID(), "DEAN"), + new MemberResponse(UUID.randomUUID(), "ZION-T"))); given(groupService.inviteGroup(any())).willReturn(expected); // when @@ -252,9 +265,23 @@ void getMyGroups() throws Exception { List responseList = new ArrayList<>(); GroupInfoResponse response1 = - new GroupInfoResponse(UUID.randomUUID(), leaderId, "BLACK_PINK", "I_LOVE_YOU_LOSE"); + new GroupInfoResponse( + UUID.randomUUID(), + leaderId, + "BLACK_PINK", + "I_LOVE_YOU_LOSE", + List.of( + new MemberResponse(UUID.randomUUID(), "LISA"), + new MemberResponse(UUID.randomUUID(), "제니"))); GroupInfoResponse response2 = - new GroupInfoResponse(UUID.randomUUID(), leaderId, "LE_SSERAFIM", "I_LOVE_YOU_채원"); + new GroupInfoResponse( + UUID.randomUUID(), + leaderId, + "LE_SSERAFIM", + "I_LOVE_YOU_채원", + List.of( + new MemberResponse(UUID.randomUUID(), "카즈하"), + new MemberResponse(UUID.randomUUID(), "사쿠라"))); responseList.add(response1); responseList.add(response2); diff --git a/backend/src/test/java/com/twtw/backend/domain/group/service/GroupServiceTest.java b/backend/src/test/java/com/twtw/backend/domain/group/service/GroupServiceTest.java index fd8f131c..68e8df64 100644 --- a/backend/src/test/java/com/twtw/backend/domain/group/service/GroupServiceTest.java +++ b/backend/src/test/java/com/twtw/backend/domain/group/service/GroupServiceTest.java @@ -149,4 +149,25 @@ void getMyGroups() { // then assertThat(responses).hasSize(2); } + + @Test + @DisplayName("GroupId를 통한 Group 조회가 성공적인가") + void getGroupById() { + // given + Member leader = memberRepository.save(MemberEntityFixture.FIRST_MEMBER.toEntity()); + + Group group1 = new Group("BABY_MONSTER", "YG_OFFICIAL_IMAGE", leader); + + GroupMember groupMember1 = new GroupMember(group1, loginUser); + + group1.getGroupMembers().add(groupMember1); + + Group saveGroup1 = groupRepository.save(group1); + // when + + GroupInfoResponse response = groupService.getGroupById(saveGroup1.getId()); + + // then + assertThat(response.getGroupMembers()).hasSize(2); + } } diff --git a/backend/src/test/java/com/twtw/backend/domain/plan/controller/PlanControllerTest.java b/backend/src/test/java/com/twtw/backend/domain/plan/controller/PlanControllerTest.java index 63cfb5ac..2d5fccaa 100644 --- a/backend/src/test/java/com/twtw/backend/domain/plan/controller/PlanControllerTest.java +++ b/backend/src/test/java/com/twtw/backend/domain/plan/controller/PlanControllerTest.java @@ -141,7 +141,13 @@ void getPlanById() throws Exception { 127.420430538256, 37.0766874564297), new GroupInfoResponse( - UUID.randomUUID(), UUID.randomUUID(), "홍담진", "http://someUrlToS3"), + UUID.randomUUID(), + UUID.randomUUID(), + "홍담진", + "http://someUrlToS3", + List.of( + new MemberResponse(UUID.randomUUID(), "카즈하"), + new MemberResponse(UUID.randomUUID(), "사쿠라"))), List.of(new MemberResponse(UUID.randomUUID(), "진호정"))); given(planService.getPlanById(any())).willReturn(expected); @@ -263,7 +269,10 @@ void getPlans() throws Exception { UUID.randomUUID(), UUID.randomUUID(), "홍담진", - "http://someUrlToS3"), + "http://someUrlToS3", + List.of( + new MemberResponse(UUID.randomUUID(), "카즈하"), + new MemberResponse(UUID.randomUUID(), "사쿠라"))), List.of(new MemberResponse(UUID.randomUUID(), "진호정"))), new PlanInfoResponse( UUID.randomUUID(), @@ -279,7 +288,10 @@ void getPlans() throws Exception { UUID.randomUUID(), UUID.randomUUID(), "HongDamJin", - "http://someUrlToS3"), + "http://someUrlToS3", + List.of( + new MemberResponse(UUID.randomUUID(), "카즈하"), + new MemberResponse(UUID.randomUUID(), "사쿠라"))), List.of(new MemberResponse(UUID.randomUUID(), "JinHoJeong")))); given(planService.getPlans()).willReturn(expected);