Merge branch '81-guestcontroller-test' into 'dev'

Resolve "GuestController test"

Closes #81

See merge request sa4-2020/the-sanmarinoes/backend!161
This commit is contained in:
Claudio Maggioni 2020-05-23 17:54:49 +02:00
commit 1dc37cca4b

View file

@ -0,0 +1,92 @@
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.UserResponse;
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.EagerUserRepository;
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.User;
import java.security.Principal;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.security.test.context.support.WithMockUser;
@ExtendWith(MockitoExtension.class)
@WithMockUser(username = "user")
public class GuestControllerTests {
@InjectMocks private GuestController guestController;
@Mock private Principal mockPrincipal;
@Mock private EagerUserRepository userRepository;
private final User user;
public GuestControllerTests() {
user = new User();
user.setName("user");
user.setId(12L);
}
@DisplayName("Check that the list is empty when we have no hosts/guests")
@Test
public void findAllEmptyTest() {
List<UserResponse> l = guestController.findAll();
assertThat(l.isEmpty());
}
@DisplayName(
"Check that the list contains the elements added and that hosts and guests are returned properly")
@Test
public void findAllTest() {
User host1 = new User();
host1.setId(2L);
User host2 = new User();
host2.setId(3L);
User guest1 = new User();
guest1.setId(4L);
User guest2 = new User();
guest2.setId(5L);
user.addHost(host1);
user.addHost(host2);
user.addGuest(guest1);
user.addGuest(guest2);
when(mockPrincipal.getName()).thenReturn("user");
when(userRepository.findByUsername(mockPrincipal.getName())).thenReturn(this.user);
when(userRepository.findAll()).thenReturn(List.of(host1, host2, guest1, guest2));
assertThat(guestController.findAll())
.containsAll(
List.of(host1, host2, guest1, guest2)
.stream()
.map(UserResponse::fromUser)
.collect(Collectors.toList()));
assertThat(guestController.findHosts(mockPrincipal))
.containsExactly(UserResponse.fromUser(host1), UserResponse.fromUser(host2));
assertThat(guestController.findGuests(mockPrincipal))
.containsExactly(UserResponse.fromUser(guest1), UserResponse.fromUser(guest2));
}
@DisplayName("Check that the host list is empty")
@Test
public void findHostsEmptyTest() {
when(mockPrincipal.getName()).thenReturn("user");
when(userRepository.findByUsername("user")).thenReturn(user);
assertThat(guestController.findHosts(mockPrincipal).isEmpty());
}
@DisplayName("Check that the guest list is empty")
@Test
public void findGuestsEmptyTest() {
when(mockPrincipal.getName()).thenReturn("user");
when(userRepository.findByUsername("user")).thenReturn(user);
assertThat(guestController.findGuests(mockPrincipal).isEmpty());
}
}