You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.7 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package de.fd.fh.server.user;
  2. import de.fd.fh.shared.network.messages.ChangeUserRequest;
  3. import de.fd.fh.shared.network.messages.UserRequest;
  4. import org.junit.jupiter.api.BeforeEach;
  5. import org.junit.jupiter.api.Test;
  6. import org.mockito.ArgumentCaptor;
  7. import java.util.Observable;
  8. import java.util.Observer;
  9. import static org.junit.jupiter.api.Assertions.assertEquals;
  10. import static org.junit.jupiter.api.Assertions.assertNotNull;
  11. import static org.mockito.ArgumentMatchers.any;
  12. import static org.mockito.BDDMockito.then;
  13. import static org.mockito.Mockito.*;
  14. class UserServiceTest implements Observer
  15. {
  16. private Object event;
  17. @BeforeEach
  18. void before()
  19. {
  20. event = null;
  21. }
  22. @Test
  23. void given_storedUser_when_changePassword_should_changePassword()
  24. {
  25. final User user =
  26. User.of("testName");
  27. final ChangeUserRequest request =
  28. new ChangeUserRequest(null, "newPassword");
  29. final UserRepository repository = mock(UserRepository.class);
  30. when(repository.findUserById(any(UserId.class)))
  31. .thenReturn(user);
  32. final de.fd.fh.server.user.UserService service = new de.fd.fh.server.user.UserService(repository);
  33. service.addObserver(this);
  34. service.changePlayer(UserId.of("12345"), request);
  35. assertNotNull(event);
  36. }
  37. @Test
  38. void given_storedUser_when_changeUserName_should_renameAndFireEvent()
  39. {
  40. final User user =
  41. User.of("testName");
  42. final ChangeUserRequest request =
  43. new ChangeUserRequest("newTestName", null);
  44. final UserRepository repository = mock(UserRepository.class);
  45. when(repository.findUserById(any(UserId.class)))
  46. .thenReturn(user);
  47. when(repository.findUserByName(any()))
  48. .thenReturn(null);
  49. final de.fd.fh.server.user.UserService service = new de.fd.fh.server.user.UserService(repository);
  50. service.addObserver(this);
  51. final ArgumentCaptor<User> captor = ArgumentCaptor.forClass(User.class);
  52. service.changePlayer(UserId.of("12345"), request);
  53. then(repository).should().findUserById(any(UserId.class));
  54. then(repository).should().findUserByName(any());
  55. verify(repository).save(captor.capture());
  56. then(repository).should().save(any());
  57. then(repository).shouldHaveNoMoreInteractions();
  58. assertNotNull(captor.getValue(), "Should be saved");
  59. assertEquals(captor.getValue().getName(), "newTestName", "User should have new name");
  60. assertNotNull(event);
  61. }
  62. @Test
  63. void given_storedUser_when_getPlayer_should_returnPlayer()
  64. {
  65. final User user =
  66. User.of("testName");
  67. final UserRepository repository = mock(UserRepository.class);
  68. when(repository.findUserById(any(UserId.class)))
  69. .thenReturn(user);
  70. final User result = new UserService(repository).getPlayer(UserId.of("12345"));
  71. assertNotNull(result);
  72. }
  73. @Test
  74. void given_storedUser_when_getSmallPlayer_should_returnSmallPlayer()
  75. {
  76. final User user =
  77. new User(UserId.of("12345"), "testName");
  78. final UserRepository repository = mock(UserRepository.class);
  79. when(repository.findUserById(any(UserId.class)))
  80. .thenReturn(user);
  81. final UserRequest result = new de.fd.fh.server.user.UserService(repository).getSmallPlayer(UserId.of("12345"));
  82. assertNotNull(result);
  83. assertEquals("12345", result.getId(), "Wrong UserId");
  84. assertEquals("testName", result.getName(), "Wrong Name");
  85. }
  86. @Override
  87. public void update(Observable o, Object arg)
  88. {
  89. event = arg;
  90. }
  91. }