From 3dd7ff4b2a7da497222d7b08b00f2ac5f23eab65 Mon Sep 17 00:00:00 2001 From: Dmytro Trotsenko Date: Thu, 9 May 2024 23:54:10 +0300 Subject: [PATCH 1/3] fix: mapping user email to nickname in MessageResponseDto --- .../chat/yourway/service/ChatMessageServiceImpl.java | 12 +++++++++++- .../integration/controller/ChatControllerTest.java | 8 ++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java b/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java index 7b40e510..4de00725 100644 --- a/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java +++ b/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java @@ -9,6 +9,7 @@ import com.chat.yourway.service.interfaces.ChatMessageService; import com.chat.yourway.service.interfaces.ChatNotificationService; import com.chat.yourway.service.interfaces.ContactEventService; +import com.chat.yourway.service.interfaces.ContactService; import com.chat.yourway.service.interfaces.MessageService; import java.util.List; import lombok.RequiredArgsConstructor; @@ -27,6 +28,7 @@ public class ChatMessageServiceImpl implements ChatMessageService { private final MessageService messageService; private final ContactEventService contactEventService; private final ChatNotificationService chatNotificationService; + private final ContactService contactService; @Transactional @Override @@ -34,6 +36,7 @@ public MessageResponseDto sendToPublicTopic(Integer topicId, MessagePublicReques String email) { log.trace("Started contact email: [{}] sendToTopic id: [{}]", email, topicId); MessageResponseDto messageResponseDto = messageService.createPublic(topicId, message, email); + messageResponseDto.setSentFrom(contactService.findByEmail(email).getNickname()); sendToTopic(topicId, messageResponseDto); @@ -49,6 +52,10 @@ public MessageResponseDto sendToPrivateTopic(Integer topicId, MessagePrivateRequ log.trace("Started contact email: [{}] sendToPrivateTopic email: [{}]", email, sendTo); MessageResponseDto messageResponseDto = messageService.createPrivate(message, email); + messageResponseDto.setSentFrom(contactService.findByEmail(email).getNickname()); + messageResponseDto.setSendTo( + contactService.findByEmail(messageResponseDto.getSendTo()).getNickname()); + sendToTopic(topicId, messageResponseDto); log.trace("Contact [{}] sent message to [{}]", email, sendTo); @@ -60,7 +67,10 @@ public List sendMessageHistoryByTopicId(Integer topicId, PageRequestDto pageRequestDto, String email) { log.trace("Started sendMessageHistoryByTopicId = [{}]", topicId); - List messages = messageService.findAllByTopicId(topicId, pageRequestDto); + List messages = messageService.findAllByTopicId(topicId, pageRequestDto) + .stream() + .peek(m -> m.setSentFrom(contactService.findByEmail(m.getSentFrom()).getNickname())) + .toList(); simpMessagingTemplate.convertAndSendToUser(email, toTopicDestination(topicId), messages); log.trace("Message history was sent to topicId = [{}]", topicId); diff --git a/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java b/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java index 1131c438..610011c4 100644 --- a/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java +++ b/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java @@ -125,7 +125,7 @@ void sendToTopic_shouldReturnCorrectSendToPublicTopicAndReceivedMessageFromTopic MessageResponseDto messageResponseDto = resultKeeper.get(3, SECONDS); assertThat(messageResponseDto).isNotNull(); assertThat(messageResponseDto.getId()).isNotNull(); - assertThat(messageResponseDto.getSentFrom()).isEqualTo("vasil@gmail.com"); + assertThat(messageResponseDto.getSentFrom()).isEqualTo("Vasil"); assertThat(messageResponseDto.getSendTo()).isEqualTo("Topic id=" + topicId); assertThat(messageResponseDto.getTimestamp()).isNotNull(); assertThat(messageResponseDto.getContent()).isEqualTo(messageRequestDto.getContent()); @@ -155,8 +155,8 @@ void sendToContact_shouldReturnCorrectReceivedPrivateMessageFromSelfToSelf() { MessageResponseDto messageResponseDto = resultKeeper.get(3, SECONDS); assertThat(messageResponseDto).isNotNull(); assertThat(messageResponseDto.getId()).isNotNull(); - assertThat(messageResponseDto.getSentFrom()).isEqualTo("vasil@gmail.com"); - assertThat(messageResponseDto.getSendTo()).isEqualTo("vasil@gmail.com"); + assertThat(messageResponseDto.getSentFrom()).isEqualTo("Vasil"); + assertThat(messageResponseDto.getSendTo()).isEqualTo("Vasil"); assertThat(messageResponseDto.getTimestamp()).isNotNull(); assertThat(messageResponseDto.getContent()).isEqualTo(messageRequestDto.getContent()); } @@ -185,7 +185,7 @@ void getMessages_shouldReturnReceivedMessagesHistoryFromTopic() { assertThat(messageResponseDtos).extracting("id").isNotNull(); assertThat(messageResponseDtos).extracting("timestamp").isNotNull(); assertThat(messageResponseDtos).extracting("sentFrom") - .contains("anton@gmail.com", "vasil@gmail.com"); + .contains("Anton", "Vasil"); assertThat(messageResponseDtos).extracting("sendTo") .contains("vasil@gmail.com", "anton@gmail.com"); assertThat(messageResponseDtos).extracting("content") From c195a9fcfd5fe5b9342047b0229938d05c457346 Mon Sep 17 00:00:00 2001 From: Dmytro Trotsenko Date: Sat, 11 May 2024 20:36:00 +0300 Subject: [PATCH 2/3] fix: added mapping email -> nickname to field sendTo in to private messages --- .../chat/yourway/service/ChatMessageServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java b/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java index 4de00725..25d0f0ef 100644 --- a/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java +++ b/src/main/java/com/chat/yourway/service/ChatMessageServiceImpl.java @@ -69,7 +69,12 @@ public List sendMessageHistoryByTopicId(Integer topicId, List messages = messageService.findAllByTopicId(topicId, pageRequestDto) .stream() - .peek(m -> m.setSentFrom(contactService.findByEmail(m.getSentFrom()).getNickname())) + .peek(m -> { + m.setSentFrom(contactService.findByEmail(m.getSentFrom()).getNickname()); + if (isPrivate(m)) { + m.setSendTo(contactService.findByEmail(m.getSendTo()).getNickname()); + } + }) .toList(); simpMessagingTemplate.convertAndSendToUser(email, toTopicDestination(topicId), messages); @@ -95,4 +100,8 @@ private String toTopicDestination(Integer topicId) { return properties.getTopicPrefix() + "/" + topicId; } + private boolean isPrivate(MessageResponseDto message) { + return message.getSendTo().contains("@"); + } + } From fa43f2650be173e73576fbfce7b35e7c88a616cd Mon Sep 17 00:00:00 2001 From: Dmytro Trotsenko Date: Sun, 12 May 2024 00:11:20 +0300 Subject: [PATCH 3/3] fix: fixed getMessages test --- .../chat/yourway/integration/controller/ChatControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java b/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java index 610011c4..0c39592b 100644 --- a/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java +++ b/src/test/java/com/chat/yourway/integration/controller/ChatControllerTest.java @@ -187,7 +187,7 @@ void getMessages_shouldReturnReceivedMessagesHistoryFromTopic() { assertThat(messageResponseDtos).extracting("sentFrom") .contains("Anton", "Vasil"); assertThat(messageResponseDtos).extracting("sendTo") - .contains("vasil@gmail.com", "anton@gmail.com"); + .contains("Vasil", "Anton"); assertThat(messageResponseDtos).extracting("content") .contains("hello Vasil!", "hello Anton!"); }