Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TRIB-102, return the username along with the user ID in connectOutgoingMessageDTO #165

Merged
merged 3 commits into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ public class ConnectOutgoingMessageDTO {

public String message;

public Long to;
public UsernameDTO to;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.savvato.tribeapp.controllers.dto.ConnectionRemovalRequest;
import com.savvato.tribeapp.dto.ConnectIncomingMessageDTO;
import com.savvato.tribeapp.dto.ConnectOutgoingMessageDTO;
import com.savvato.tribeapp.dto.UsernameDTO;
import com.savvato.tribeapp.entities.Connection;
import com.savvato.tribeapp.repositories.ConnectionsRepository;
import com.savvato.tribeapp.repositories.UserRepository;
Expand Down Expand Up @@ -112,21 +113,32 @@ public List<ConnectOutgoingMessageDTO> handleConnectionIntent(String connectionI
if (connectionIntent == "") {
rtn.add(ConnectOutgoingMessageDTO.builder()
.message("Please confirm that you wish to connect.")
.to(toBeConnectedWithUserId)
.to(UsernameDTO.builder()
.userId(toBeConnectedWithUserId)
.username(userRepository.findById(toBeConnectedWithUserId).get().getName())
.build())
.build());

return rtn;
} else if (connectionIntent == "confirmed") {
Boolean connectionStatus = saveConnectionDetails(requestingUserId, toBeConnectedWithUserId);
for(Long id : allRecipients) {
if (connectionStatus) {
rtn.add(ConnectOutgoingMessageDTO.builder()
.connectionSuccess(true)
.to(id)
.to(UsernameDTO.builder()
.userId(id)
.username(userRepository.findById(id).get().getName())
.build())
.message("Successfully saved connection!")
.build());
} else {
rtn.add(ConnectOutgoingMessageDTO.builder()
.connectionError(true)
.to(id)
.to(UsernameDTO.builder()
.userId(id)
.username(userRepository.findById(id).get().getName())
.build())
.message("Failed to save connection to database.")
.build());
}
Expand All @@ -135,7 +147,10 @@ public List<ConnectOutgoingMessageDTO> handleConnectionIntent(String connectionI
for(Long id : allRecipients) {
rtn.add(ConnectOutgoingMessageDTO.builder()
.connectionError(true)
.to(id)
.to(UsernameDTO.builder()
.userId(id)
.username(userRepository.findById(id).get().getName())
.build())
.message("Connection request denied.")
.build());
}
Expand All @@ -153,7 +168,10 @@ public List<ConnectOutgoingMessageDTO> getAllConnectionsForAUser(Long userId) {
for (Connection connection : connections) {
ConnectOutgoingMessageDTO outgoingMessage = ConnectOutgoingMessageDTO.builder()
.connectionSuccess(true)
.to(connection.getRequestingUserId())
.to(UsernameDTO.builder()
.userId(connection.getRequestingUserId())
.username(userRepository.findById(connection.getRequestingUserId()).get().getName())
.build())
.message("")
.build();
outgoingMessages.add(outgoingMessage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,10 @@ public void testGetConnectionsHappyPath() throws Exception {
.connectionError(null)
.connectionSuccess(true)
.message("")
.to(requestingUserId)
.to(UsernameDTO.builder()
.userId(requestingUserId)
.username("test")
.build())
.build();

List<ConnectOutgoingMessageDTO> expectedReturnDtoList = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.savvato.tribeapp.services;

import com.savvato.tribeapp.controllers.dto.UserRequest;
import com.savvato.tribeapp.dto.UsernameDTO;
import com.savvato.tribeapp.entities.*;

import java.util.HashSet;
Expand Down Expand Up @@ -84,6 +85,22 @@ public User getUser2() {
return rtn;
}

public UsernameDTO getUsernameDTOForUserID(Long userId) {
if (userId == USER1_ID) {
return UsernameDTO.builder()
.userId(USER1_ID)
.username(USER1_NAME)
.build();
} else if (userId == USER2_ID) {
return UsernameDTO.builder()
.userId(USER2_ID)
.username(USER2_NAME)
.build();
} else {
return null;
}
}

public UserRequest getUserRequestFor(User user) {
UserRequest rtn = new UserRequest();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@ public void connectWhenQrCodeIsInvalid() {
@Test
public void connectWhenQrCodeIsValid() {
UserPrincipal user = new UserPrincipal(getUser1());
Long requestingUserId = 1L;
Long toBeConnectedWithUserId = 2L;
Long requestingUserId = USER1_ID;
Long toBeConnectedWithUserId = USER2_ID;
String connectionIntent = "";
String expectedDestination = "/connect/user/queue/specific-user";
ConnectIncomingMessageDTO incoming = ConnectIncomingMessageDTO.builder()
Expand All @@ -167,7 +167,7 @@ public void connectWhenQrCodeIsValid() {
List<ConnectOutgoingMessageDTO> outgoing = new ArrayList<>();
outgoing.add(ConnectOutgoingMessageDTO.builder()
.message("Please confirm that you wish to connect.")
.to(toBeConnectedWithUserId)
.to(getUsernameDTOForUserID(toBeConnectedWithUserId))
.build());
ConnectService connectServiceSpy = spy(connectService);
doReturn(true).when(connectServiceSpy).validateQRCode(Mockito.any(), Mockito.any());
Expand All @@ -194,15 +194,16 @@ public void connectWhenQrCodeIsValid() {

@Test
public void handleConnectionIntentWhenNoConnectionIntent() {
Long requestingUserId = 1L;
Long toBeConnectedWithUserId = 2L;
Long requestingUserId = USER1_ID;
Long toBeConnectedWithUserId = USER2_ID;
String connectionIntent = "";
List<ConnectOutgoingMessageDTO> expectedOutgoingMsg = new ArrayList<>();
expectedOutgoingMsg.add(ConnectOutgoingMessageDTO.builder()
.message("Please confirm that you wish to connect.")
.to(toBeConnectedWithUserId)
.to(getUsernameDTOForUserID(toBeConnectedWithUserId))
.build());
ConnectService connectServiceSpy = spy(connectService);
Mockito.when(userRepository.findById(Mockito.any())).thenReturn(Optional.of(getUser2()));
List<ConnectOutgoingMessageDTO> outgoing = connectServiceSpy.handleConnectionIntent(connectionIntent, requestingUserId, toBeConnectedWithUserId);

verify(connectServiceSpy, never()).saveConnectionDetails(Mockito.any(), Mockito.any());
Expand All @@ -212,20 +213,21 @@ public void handleConnectionIntentWhenNoConnectionIntent() {

@Test
public void handleConnectionIntentWhenConnectionIntentConfirmedAndDatabaseSaveSuccessful() {
Long requestingUserId = 1L;
Long toBeConnectedWithUserId = 2L;
Long requestingUserId = USER1_ID;
Long toBeConnectedWithUserId = USER2_ID;
String connectionIntent = "confirmed";
ArrayList<Long> recipients = new ArrayList<>(Arrays.asList(requestingUserId, toBeConnectedWithUserId));
List<ConnectOutgoingMessageDTO> expectedOutgoingMsg = new ArrayList<>();
for(Long id : recipients) {
expectedOutgoingMsg.add(ConnectOutgoingMessageDTO.builder()
.connectionSuccess(true)
.to(id)
.to(getUsernameDTOForUserID(id))
.message("Successfully saved connection!")
.build());
}
Connection connection = new Connection(requestingUserId, toBeConnectedWithUserId);
Mockito.when(connectionsRepository.save(Mockito.any())).thenReturn(connection);
Mockito.when(userRepository.findById(Mockito.any())).thenReturn(Optional.of(getUser1())).thenReturn(Optional.of(getUser2()));
List<ConnectOutgoingMessageDTO> outgoing = connectService.handleConnectionIntent(connectionIntent, requestingUserId, toBeConnectedWithUserId);

ArgumentCaptor<Connection> connectionArg = ArgumentCaptor.forClass(Connection.class);
Expand All @@ -237,20 +239,21 @@ public void handleConnectionIntentWhenConnectionIntentConfirmedAndDatabaseSaveSu

@Test
public void handleConnectionIntentWhenConnectionIntentConfirmedAndDatabaseSaveUnsuccessful() throws Exception {
Long requestingUserId = 1L;
Long toBeConnectedWithUserId = 2L;
Long requestingUserId = USER1_ID;
Long toBeConnectedWithUserId = USER2_ID;
String connectionIntent = "confirmed";
ArrayList<Long> recipients = new ArrayList<>(Arrays.asList(requestingUserId, toBeConnectedWithUserId));
List<ConnectOutgoingMessageDTO> expectedOutgoingMsg = new ArrayList<>();
for(Long id : recipients) {
expectedOutgoingMsg.add(ConnectOutgoingMessageDTO.builder()
.connectionError(true)
.to(id)
.to(getUsernameDTOForUserID(id))
.message("Failed to save connection to database.")
.build());
}

Mockito.when(connectionsRepository.save(Mockito.any())).thenThrow(new NullPointerException("Something went wrong."));
Mockito.when(userRepository.findById(Mockito.any())).thenReturn(Optional.of(getUser1())).thenReturn(Optional.of(getUser2()));
List<ConnectOutgoingMessageDTO> outgoing = connectService.handleConnectionIntent(connectionIntent, requestingUserId, toBeConnectedWithUserId);

ArgumentCaptor<Connection> connectionArg = ArgumentCaptor.forClass(Connection.class);
Expand All @@ -262,19 +265,20 @@ public void handleConnectionIntentWhenConnectionIntentConfirmedAndDatabaseSaveUn

@Test
public void handleConnectionIntentWhenConnectionIntentDenied() {
Long requestingUserId = 1L;
Long toBeConnectedWithUserId = 2L;
Long requestingUserId = USER1_ID;
Long toBeConnectedWithUserId = USER2_ID;
String connectionIntent = "denied";
ArrayList<Long> recipients = new ArrayList<>(Arrays.asList(requestingUserId, toBeConnectedWithUserId));
List<ConnectOutgoingMessageDTO> expectedOutgoingMsg = new ArrayList<>();
for(Long id : recipients) {
expectedOutgoingMsg.add(ConnectOutgoingMessageDTO.builder()
.connectionError(true)
.to(id)
.to(getUsernameDTOForUserID(id))
.message("Connection request denied.")
.build());
}
ConnectService connectServiceSpy = spy(connectService);
Mockito.when(userRepository.findById(Mockito.any())).thenReturn(Optional.of(getUser1())).thenReturn(Optional.of(getUser2()));
List<ConnectOutgoingMessageDTO> outgoing = connectServiceSpy.handleConnectionIntent(connectionIntent, requestingUserId, toBeConnectedWithUserId);

verify(connectServiceSpy, never()).saveConnectionDetails(Mockito.any(), Mockito.any());
Expand Down Expand Up @@ -343,11 +347,12 @@ public void testGetAllConnectionsForAUserWhenConnectionsExist() {
List<ConnectOutgoingMessageDTO> expectedOutgoingMessageDTOS = new ArrayList<>();
ConnectOutgoingMessageDTO outgoingMessage = ConnectOutgoingMessageDTO.builder()
.connectionSuccess(true)
.to(connection.getRequestingUserId())
.to(getUsernameDTOForUserID(connection.getRequestingUserId()))
.message("")
.build();
expectedOutgoingMessageDTOS.add(outgoingMessage);

Mockito.when(userRepository.findById(Mockito.any())).thenReturn(Optional.of(getUser1())).thenReturn(Optional.of(getUser2()));
List<ConnectOutgoingMessageDTO> actualMessageDTOs = connectService.getAllConnectionsForAUser(toBeConnectedUserId);

assertThat(actualMessageDTOs).usingRecursiveComparison().isEqualTo(expectedOutgoingMessageDTOS);
Expand Down
Loading