From dfc33a5469428bd53093a7f173b01d1138163d30 Mon Sep 17 00:00:00 2001 From: JaeSeo Yang <96044622+psychology50@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:39:18 +0900 Subject: [PATCH] fix: handle change propagation --- ...RoomWithParticipantsSearchServiceTest.java | 5 +- .../repository/ChatMemberRepository.java | 8 +-- .../CustomChatMemberRepositoryImpl.java | 15 +++--- .../member/service/ChatMemberRdbService.java | 37 ++++++++----- .../service/ChatMemberCreateServiceTest.java | 6 +-- .../collection/ChatMemberJoinOperation.java | 9 ++-- .../ChatMemberJoinOperationTest.java | 54 ++++++++++++++++--- ...omAdminDelegateServiceIntegrationTest.java | 2 +- .../ChatRoomDeleteServiceIntegrationTest.java | 2 +- 9 files changed, 95 insertions(+), 43 deletions(-) diff --git a/pennyway-app-external-api/src/test/java/kr/co/pennyway/api/apis/chat/service/ChatRoomWithParticipantsSearchServiceTest.java b/pennyway-app-external-api/src/test/java/kr/co/pennyway/api/apis/chat/service/ChatRoomWithParticipantsSearchServiceTest.java index edbfc650a..3ff14e531 100644 --- a/pennyway-app-external-api/src/test/java/kr/co/pennyway/api/apis/chat/service/ChatRoomWithParticipantsSearchServiceTest.java +++ b/pennyway-app-external-api/src/test/java/kr/co/pennyway/api/apis/chat/service/ChatRoomWithParticipantsSearchServiceTest.java @@ -101,8 +101,9 @@ public void successToRetrieveChatRoomWithParticipantsAndRecentMessages() { @DisplayName("일반 회원이 채팅방 참여자 정보와 최근 메시지를 조회하면 관리자 정보도 함께 조회된다") public void memberSuccessToRetrieveChatRoomWithParticipantsIncludingAdmin() { // given - ChatMember myInfo = createChatMember(userId, UserFixture.GENERAL_USER.toUser(), chatRoom, ChatMemberRole.MEMBER); - ChatMemberResult.Detail adminDetail = new ChatMemberResult.Detail(2L, "Admin", ChatMemberRole.ADMIN, true, 2L, LocalDateTime.now(), myInfo.getUser().getProfileImageUrl()); + User user = UserFixture.GENERAL_USER.toUser(); + ChatMember myInfo = createChatMember(userId, user, chatRoom, ChatMemberRole.MEMBER); + ChatMemberResult.Detail adminDetail = new ChatMemberResult.Detail(2L, "Admin", ChatMemberRole.ADMIN, true, 2L, LocalDateTime.now(), user.getProfileImageUrl()); List recentMessages = createRecentMessages(); List recentParticipants = createRecentParticipantDetails(); List otherParticipants = createOtherParticipantSummaries(); diff --git a/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/ChatMemberRepository.java b/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/ChatMemberRepository.java index ea4ec39d8..45107e7d4 100644 --- a/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/ChatMemberRepository.java +++ b/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/ChatMemberRepository.java @@ -13,7 +13,7 @@ public interface ChatMemberRepository extends ExtendedRepository, CustomChatMemberRepository { @Transactional(readOnly = true) - Set findByChatRoom_IdAndUser_Id(Long chatRoomId, Long userId); + Set findByChatRoom_IdAndUserId(Long chatRoomId, Long userId); @Transactional(readOnly = true) Optional findByChatRoom_IdAndRole(Long chatRoomId, ChatMemberRole role); @@ -30,7 +30,7 @@ public interface ChatMemberRepository extends ExtendedRepository findByChatMember_Id(Long chatMemberId); @Transactional(readOnly = true) - @Query("SELECT cm FROM ChatMember cm WHERE cm.chatRoom.id = :chatRoomId AND cm.user.id = :userId AND cm.deletedAt IS NULL") + @Query("SELECT cm FROM ChatMember cm WHERE cm.chatRoom.id = :chatRoomId AND cm.userId = :userId AND cm.deletedAt IS NULL") Optional findActiveChatMember(Long chatRoomId, Long userId); @Transactional(readOnly = true) @@ -38,11 +38,11 @@ public interface ChatMemberRepository extends ExtendedRepository findChatRoomIdsByUserId(Long userId); @Transactional(readOnly = true) - @Query("SELECT cm.user.id FROM ChatMember cm WHERE cm.chatRoom.id = :chatRoomId AND cm.deletedAt IS NULL") + @Query("SELECT cm.userId FROM ChatMember cm WHERE cm.chatRoom.id = :chatRoomId AND cm.deletedAt IS NULL") Set findUserIdsByChatRoomId(Long chatRoomId); @Transactional diff --git a/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/CustomChatMemberRepositoryImpl.java b/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/CustomChatMemberRepositoryImpl.java index 58beaa403..24b5a9125 100644 --- a/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/CustomChatMemberRepositoryImpl.java +++ b/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/repository/CustomChatMemberRepositoryImpl.java @@ -6,6 +6,7 @@ import kr.co.pennyway.domain.domains.member.domain.QChatMember; import kr.co.pennyway.domain.domains.member.dto.ChatMemberResult; import kr.co.pennyway.domain.domains.member.type.ChatMemberRole; +import kr.co.pennyway.domain.domains.user.domain.QUser; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -17,13 +18,14 @@ public class CustomChatMemberRepositoryImpl implements CustomChatMemberRepositor private final JPAQueryFactory queryFactory; private final QChatMember chatMember = QChatMember.chatMember; + private final QUser user = QUser.user; @Override public boolean existsByChatRoomIdAndUserId(Long chatRoomId, Long userId) { return queryFactory.select(ConstantImpl.create(1)) .from(chatMember) .where(chatMember.chatRoom.id.eq(chatRoomId) - .and(chatMember.user.id.eq(userId)) + .and(chatMember.userId.eq(userId)) .and(chatMember.deletedAt.isNull())) .fetchFirst() != null; } @@ -32,7 +34,7 @@ public boolean existsByChatRoomIdAndUserId(Long chatRoomId, Long userId) { public boolean existsOwnershipChatRoomByUserId(Long userId) { return queryFactory.select(ConstantImpl.create(1)) .from(chatMember) - .where(chatMember.user.id.eq(userId) + .where(chatMember.userId.eq(userId) .and(chatMember.role.eq(ChatMemberRole.ADMIN)) .and(chatMember.deletedAt.isNull())) .fetchFirst() != null; @@ -43,7 +45,7 @@ public boolean existsByChatRoomIdAndUserIdAndId(Long chatRoomId, Long userId, Lo return queryFactory.select(ConstantImpl.create(1)) .from(chatMember) .where(chatMember.chatRoom.id.eq(chatRoomId) - .and(chatMember.user.id.eq(userId)) + .and(chatMember.userId.eq(userId)) .and(chatMember.id.eq(chatMemberId)) .and(chatMember.deletedAt.isNull())) .fetchFirst() != null; @@ -56,15 +58,16 @@ public Optional findAdminByChatRoomId(Long chatRoomId) Projections.constructor( ChatMemberResult.Detail.class, chatMember.id, - chatMember.user.name, + user.name, chatMember.role, chatMember.notifyEnabled, - chatMember.user.id, + user.id, chatMember.createdAt, - chatMember.user.profileImageUrl + user.profileImageUrl ) ) .from(chatMember) + .innerJoin(user).on(chatMember.userId.eq(user.id)) .where(chatMember.chatRoom.id.eq(chatRoomId) .and(chatMember.role.eq(ChatMemberRole.ADMIN)) .and(chatMember.deletedAt.isNull())) diff --git a/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/service/ChatMemberRdbService.java b/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/service/ChatMemberRdbService.java index cb69b4758..3bc3f8410 100644 --- a/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/service/ChatMemberRdbService.java +++ b/pennyway-domain/domain-rdb/src/main/java/kr/co/pennyway/domain/domains/member/service/ChatMemberRdbService.java @@ -3,6 +3,7 @@ import com.querydsl.core.types.Expression; import com.querydsl.core.types.Predicate; import kr.co.pennyway.common.annotation.DomainService; +import kr.co.pennyway.domain.common.repository.QueryHandler; import kr.co.pennyway.domain.domains.chatroom.domain.ChatRoom; import kr.co.pennyway.domain.domains.member.domain.ChatMember; import kr.co.pennyway.domain.domains.member.domain.QChatMember; @@ -11,6 +12,7 @@ import kr.co.pennyway.domain.domains.member.exception.ChatMemberErrorException; import kr.co.pennyway.domain.domains.member.repository.ChatMemberRepository; import kr.co.pennyway.domain.domains.member.type.ChatMemberRole; +import kr.co.pennyway.domain.domains.user.domain.QUser; import kr.co.pennyway.domain.domains.user.domain.User; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -24,6 +26,7 @@ public class ChatMemberRdbService { private final ChatMemberRepository chatMemberRepository; + private final QUser qUser = QUser.user; private final QChatMember qChatMember = QChatMember.chatMember; @Transactional @@ -40,7 +43,7 @@ public ChatMember createAdmin(User user, ChatRoom chatRoom) { @Transactional public ChatMember createMember(User user, ChatRoom chatRoom) { - Set chatMembers = chatMemberRepository.findByChatRoom_IdAndUser_Id(chatRoom.getId(), user.getId()); + Set chatMembers = chatMemberRepository.findByChatRoom_IdAndUserId(chatRoom.getId(), user.getId()); if (chatMembers.stream().anyMatch(ChatMember::isActive)) { log.warn("사용자는 이미 채팅방에 가입되어 있습니다. chatRoomId: {}, userId: {}", chatRoom.getId(), user.getId()); @@ -79,51 +82,57 @@ public Set readChatMembersByChatRoomId(Long chatRoomId) { @Transactional(readOnly = true) public List readChatMembersByIdIn(Long chatRoomId, Set chatMemberIds) { + QueryHandler queryHandler = query -> query.innerJoin(qUser).on(qChatMember.userId.eq(qUser.id)); + Predicate predicate = qChatMember.chatRoom.id.eq(chatRoomId) .and(qChatMember.id.in(chatMemberIds)) .and(qChatMember.deletedAt.isNull()); Map> bindings = new LinkedHashMap<>(); bindings.put("id", qChatMember.id); - bindings.put("name", qChatMember.user.name); + bindings.put("name", qUser.name); bindings.put("role", qChatMember.role); bindings.put("notification", qChatMember.notifyEnabled); - bindings.put("userId", qChatMember.user.id); + bindings.put("userId", qUser.id); bindings.put("createdAt", qChatMember.createdAt); - bindings.put("profileImageUrl", qChatMember.user.profileImageUrl); + bindings.put("profileImageUrl", qUser.profileImageUrl); - return chatMemberRepository.selectList(predicate, ChatMemberResult.Detail.class, bindings, null, null); + return chatMemberRepository.selectList(predicate, ChatMemberResult.Detail.class, bindings, queryHandler, null); } @Transactional(readOnly = true) public List readChatMembersByUserIdIn(Long chatRoomId, Set userIds) { + QueryHandler queryHandler = query -> query.innerJoin(qUser).on(qChatMember.userId.eq(qUser.id)); + Predicate predicate = qChatMember.chatRoom.id.eq(chatRoomId) - .and(qChatMember.user.id.in(userIds)) + .and(qUser.id.in(userIds)) .and(qChatMember.deletedAt.isNull()); Map> bindings = new LinkedHashMap<>(); - bindings.put("id", qChatMember.id); - bindings.put("name", qChatMember.user.name); + bindings.put("id", qUser.id); + bindings.put("name", qUser.name); bindings.put("role", qChatMember.role); bindings.put("notification", qChatMember.notifyEnabled); - bindings.put("userId", qChatMember.user.id); + bindings.put("userId", qUser.id); bindings.put("createdAt", qChatMember.createdAt); - bindings.put("profileImageUrl", qChatMember.user.profileImageUrl); + bindings.put("profileImageUrl", qUser.profileImageUrl); - return chatMemberRepository.selectList(predicate, ChatMemberResult.Detail.class, bindings, null, null); + return chatMemberRepository.selectList(predicate, ChatMemberResult.Detail.class, bindings, queryHandler, null); } @Transactional(readOnly = true) public List readChatMemberIdsByUserIdNotIn(Long chatRoomId, Set userIds) { + QueryHandler queryHandler = query -> query.innerJoin(qUser).on(qChatMember.userId.eq(qUser.id)); + Predicate predicate = qChatMember.chatRoom.id.eq(chatRoomId) - .and(qChatMember.user.id.notIn(userIds)) + .and(qUser.id.notIn(userIds)) .and(qChatMember.deletedAt.isNull()); Map> bindings = new LinkedHashMap<>(); bindings.put("id", qChatMember.id); - bindings.put("name", qChatMember.user.name); + bindings.put("name", qUser.name); - return chatMemberRepository.selectList(predicate, ChatMemberResult.Summary.class, bindings, null, null); + return chatMemberRepository.selectList(predicate, ChatMemberResult.Summary.class, bindings, queryHandler, null); } @Transactional(readOnly = true) diff --git a/pennyway-domain/domain-rdb/src/test/java/kr/co/pennyway/domain/member/service/ChatMemberCreateServiceTest.java b/pennyway-domain/domain-rdb/src/test/java/kr/co/pennyway/domain/member/service/ChatMemberCreateServiceTest.java index 260b314ad..0c9148135 100644 --- a/pennyway-domain/domain-rdb/src/test/java/kr/co/pennyway/domain/member/service/ChatMemberCreateServiceTest.java +++ b/pennyway-domain/domain-rdb/src/test/java/kr/co/pennyway/domain/member/service/ChatMemberCreateServiceTest.java @@ -50,7 +50,7 @@ void setUp() { void createMemberWhenAlreadyExist() { // given ChatMember chatMember = ChatMember.of(user, chatRoom, ChatMemberRole.MEMBER); - given(chatMemberRepository.findByChatRoom_IdAndUser_Id(chatRoom.getId(), user.getId())).willReturn(Set.of(chatMember)); + given(chatMemberRepository.findByChatRoom_IdAndUserId(chatRoom.getId(), user.getId())).willReturn(Set.of(chatMember)); // when ChatMemberErrorException exception = assertThrows(ChatMemberErrorException.class, () -> chatMemberService.createMember(user, chatRoom)); @@ -65,7 +65,7 @@ void createMemberWhenBanned() { // given ChatMember chatMember = ChatMember.of(user, chatRoom, ChatMemberRole.MEMBER); chatMember.ban(); - given(chatMemberRepository.findByChatRoom_IdAndUser_Id(chatRoom.getId(), user.getId())).willReturn(Set.of(chatMember)); + given(chatMemberRepository.findByChatRoom_IdAndUserId(chatRoom.getId(), user.getId())).willReturn(Set.of(chatMember)); // when ChatMemberErrorException exception = assertThrows(ChatMemberErrorException.class, () -> chatMemberService.createMember(user, chatRoom)); @@ -79,7 +79,7 @@ void createMemberWhenBanned() { void createMemberWhenNotExist() { // given - given(chatMemberRepository.findByChatRoom_IdAndUser_Id(chatRoom.getId(), user.getId())).willReturn(Set.of()); + given(chatMemberRepository.findByChatRoom_IdAndUserId(chatRoom.getId(), user.getId())).willReturn(Set.of()); ChatMember chatMember = ChatMember.of(user, chatRoom, ChatMemberRole.MEMBER); given(chatMemberRepository.save(any(ChatMember.class))).willReturn(chatMember); diff --git a/pennyway-domain/domain-service/src/main/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperation.java b/pennyway-domain/domain-service/src/main/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperation.java index 3785ffd13..8c9f82003 100644 --- a/pennyway-domain/domain-service/src/main/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperation.java +++ b/pennyway-domain/domain-service/src/main/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperation.java @@ -11,7 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.lang.NonNull; -import java.util.Set; +import java.util.Collection; @Slf4j public class ChatMemberJoinOperation { @@ -19,9 +19,9 @@ public class ChatMemberJoinOperation { private final User user; private final ChatRoom chatRoom; - private final Set chatMembers; + private final Collection chatMembers; - public ChatMemberJoinOperation(@NonNull User user, @NonNull ChatRoom chatRoom, @NonNull Set chatMembers) { + public ChatMemberJoinOperation(@NonNull User user, @NonNull ChatRoom chatRoom, @NonNull Collection chatMembers) { this.user = user; this.chatRoom = chatRoom; this.chatMembers = chatMembers; @@ -65,7 +65,8 @@ public ChatMember execute(Integer password) { } private boolean isAlreadyJoined(ChatMember chatMember) { - return chatMembers.contains(chatMember); + return chatMembers.stream() + .anyMatch(member -> member.getUserId().equals(chatMember.getUserId())); } private boolean isFullRoom() { diff --git a/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperationTest.java b/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperationTest.java index 2332d700e..6f58f1fb3 100644 --- a/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperationTest.java +++ b/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/collection/ChatMemberJoinOperationTest.java @@ -2,15 +2,23 @@ import kr.co.pennyway.domain.context.common.fixture.ChatRoomFixture; import kr.co.pennyway.domain.context.common.fixture.UserFixture; +import kr.co.pennyway.domain.domains.chatroom.domain.ChatRoom; import kr.co.pennyway.domain.domains.chatroom.exception.ChatRoomErrorCode; import kr.co.pennyway.domain.domains.chatroom.exception.ChatRoomErrorException; import kr.co.pennyway.domain.domains.member.domain.ChatMember; +import kr.co.pennyway.domain.domains.member.exception.ChatMemberErrorCode; +import kr.co.pennyway.domain.domains.member.exception.ChatMemberErrorException; import kr.co.pennyway.domain.domains.member.type.ChatMemberRole; import kr.co.pennyway.domain.domains.user.domain.User; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.test.util.ReflectionTestUtils; +import java.util.HashSet; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -18,16 +26,36 @@ public class ChatMemberJoinOperationTest { private static final long MAX_MEMBER_COUNT = 300L; + @Test + @DisplayName("이미 채팅방에 참여한 사용자가 다시 참여할 때 가입에 실패한다") + void failWhenAlreadyJoined() { + // given + var user = createUser(1L); + var chatRoom = ChatRoomFixture.PUBLIC_CHAT_ROOM.toEntity(); + var chatMembers = List.of(ChatMember.of(user, chatRoom, ChatMemberRole.MEMBER)); + + var operation = new ChatMemberJoinOperation(user, chatRoom, chatMembers); + + // when & then + assertThatThrownBy(() -> operation.execute(chatRoom.getPassword())) + .isInstanceOf(ChatMemberErrorException.class) + .hasFieldOrPropertyWithValue("baseErrorCode", ChatMemberErrorCode.ALREADY_JOINED); + } + @Test @DisplayName("채팅방이 가득 찼을 때 (정원 300명) 가입에 실패한다") void failWhenChatRoomIsFull() { // given var user = createUser(1L); var chatRoom = ChatRoomFixture.PUBLIC_CHAT_ROOM.toEntity(); - var operation = new ChatMemberJoinOperation(user, chatRoom, MAX_MEMBER_COUNT); + var chatMembers = IntStream.range(0, 300) + .mapToObj(i -> createChatMember(i + 2L, chatRoom)) // userId 2~301 + .collect(Collectors.toSet()); + + var operation = new ChatMemberJoinOperation(user, chatRoom, chatMembers); // when & then - assertThatThrownBy(() -> operation.execute(null)) + assertThatThrownBy(() -> operation.execute(chatRoom.getPassword())) .isInstanceOf(ChatRoomErrorException.class) .hasFieldOrPropertyWithValue("baseErrorCode", ChatRoomErrorCode.FULL_CHAT_ROOM); } @@ -38,7 +66,9 @@ void failWhenPasswordIsNotMatch() { // given var user = createUser(1L); var chatRoom = ChatRoomFixture.PRIVATE_CHAT_ROOM.toEntity(); - var operation = new ChatMemberJoinOperation(user, chatRoom, 0L); + var chatMembers = new HashSet(); + + var operation = new ChatMemberJoinOperation(user, chatRoom, chatMembers); // when & then assertThatThrownBy(() -> operation.execute(235676)) @@ -52,14 +82,16 @@ void successWhenChatRoomIsNotFullAndPublic() { // given var user = createUser(1L); var chatRoom = ChatRoomFixture.PUBLIC_CHAT_ROOM.toEntity(); - var operation = new ChatMemberJoinOperation(user, chatRoom, 0L); + var chatMembers = new HashSet(); + + var operation = new ChatMemberJoinOperation(user, chatRoom, chatMembers); // when - ChatMember result = operation.execute(null); + ChatMember result = operation.execute(chatRoom.getPassword()); // then assertAll( - () -> assertEquals(user, result.getUser()), + () -> assertEquals(user.getId(), result.getUserId()), () -> assertEquals(chatRoom, result.getChatRoom()), () -> assertEquals(ChatMemberRole.MEMBER, result.getRole()) ); @@ -71,14 +103,16 @@ void successWhenChatRoomIsNotFullAndPrivate() { // given var user = createUser(1L); var chatRoom = ChatRoomFixture.PRIVATE_CHAT_ROOM.toEntity(); - var operation = new ChatMemberJoinOperation(user, chatRoom, 0L); + var chatMembers = new HashSet(); + + var operation = new ChatMemberJoinOperation(user, chatRoom, chatMembers); // when ChatMember result = operation.execute(chatRoom.getPassword()); // then assertAll( - () -> assertEquals(user, result.getUser()), + () -> assertEquals(user.getId(), result.getUserId()), () -> assertEquals(chatRoom, result.getChatRoom()), () -> assertEquals(ChatMemberRole.MEMBER, result.getRole()) ); @@ -89,4 +123,8 @@ private User createUser(Long userId) { ReflectionTestUtils.setField(user, "id", userId); return user; } + + private ChatMember createChatMember(Long userId, ChatRoom chatRoom) { + return ChatMember.of(createUser(userId), chatRoom, ChatMemberRole.MEMBER); + } } diff --git a/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomAdminDelegateServiceIntegrationTest.java b/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomAdminDelegateServiceIntegrationTest.java index cf65467d8..cb61010de 100644 --- a/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomAdminDelegateServiceIntegrationTest.java +++ b/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomAdminDelegateServiceIntegrationTest.java @@ -62,7 +62,7 @@ void shouldDelegateAdmin() { var chatMember = createChatMember(ChatMemberRole.MEMBER, chatRoom); // when - sut.execute(ChatRoomAdminDelegateCommand.of(chatRoom.getId(), chatAdmin.getUser().getId(), chatMember.getId())); + sut.execute(ChatRoomAdminDelegateCommand.of(chatRoom.getId(), chatAdmin.getUserId(), chatMember.getId())); // then assertEquals(ChatMemberRole.ADMIN, chatMember.getRole()); diff --git a/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomDeleteServiceIntegrationTest.java b/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomDeleteServiceIntegrationTest.java index 84a60475d..05db83ddc 100644 --- a/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomDeleteServiceIntegrationTest.java +++ b/pennyway-domain/domain-service/src/test/java/kr/co/pennyway/domain/context/chat/integration/ChatRoomDeleteServiceIntegrationTest.java @@ -125,7 +125,7 @@ void shouldAllChatMembersDeletedWhenExecute() { var admin = chatMemberRepository.save(ChatMember.of(users.get(0), chatRoom, ChatMemberRole.ADMIN)); var members = createGeneralChatMembers(users.subList(1, users.size()), chatRoom); - ChatRoomDeleteCommand command = ChatRoomDeleteCommand.of(admin.getUser().getId(), chatRoom.getId()); + ChatRoomDeleteCommand command = ChatRoomDeleteCommand.of(admin.getUserId(), chatRoom.getId()); // when chatRoomDeleteService.execute(command);