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.
112 lines
3.7 KiB
112 lines
3.7 KiB
package de.fd.fh.server.user;
|
|
|
|
import de.fd.fh.shared.network.messages.ChangeUserRequest;
|
|
import de.fd.fh.shared.network.messages.UserRequest;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.mockito.ArgumentCaptor;
|
|
|
|
import java.util.Observable;
|
|
import java.util.Observer;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.BDDMockito.then;
|
|
import static org.mockito.Mockito.*;
|
|
|
|
class UserServiceTest implements Observer
|
|
{
|
|
private Object event;
|
|
|
|
@BeforeEach
|
|
void before()
|
|
{
|
|
event = null;
|
|
}
|
|
|
|
@Test
|
|
void given_storedUser_when_changePassword_should_changePassword()
|
|
{
|
|
final User user =
|
|
User.of("testName");
|
|
final ChangeUserRequest request =
|
|
new ChangeUserRequest(null, "newPassword");
|
|
final UserRepository repository = mock(UserRepository.class);
|
|
when(repository.findUserById(any(UserId.class)))
|
|
.thenReturn(user);
|
|
|
|
final de.fd.fh.server.user.UserService service = new de.fd.fh.server.user.UserService(repository);
|
|
service.addObserver(this);
|
|
|
|
service.changePlayer(UserId.of("12345"), request);
|
|
|
|
assertNotNull(event);
|
|
}
|
|
|
|
@Test
|
|
void given_storedUser_when_changeUserName_should_renameAndFireEvent()
|
|
{
|
|
final User user =
|
|
User.of("testName");
|
|
final ChangeUserRequest request =
|
|
new ChangeUserRequest("newTestName", null);
|
|
final UserRepository repository = mock(UserRepository.class);
|
|
when(repository.findUserById(any(UserId.class)))
|
|
.thenReturn(user);
|
|
when(repository.findUserByName(any()))
|
|
.thenReturn(null);
|
|
|
|
final de.fd.fh.server.user.UserService service = new de.fd.fh.server.user.UserService(repository);
|
|
service.addObserver(this);
|
|
final ArgumentCaptor<User> captor = ArgumentCaptor.forClass(User.class);
|
|
|
|
service.changePlayer(UserId.of("12345"), request);
|
|
|
|
then(repository).should().findUserById(any(UserId.class));
|
|
then(repository).should().findUserByName(any());
|
|
verify(repository).save(captor.capture());
|
|
then(repository).should().save(any());
|
|
then(repository).shouldHaveNoMoreInteractions();
|
|
assertNotNull(captor.getValue(), "Should be saved");
|
|
assertEquals(captor.getValue().getName(), "newTestName", "User should have new name");
|
|
assertNotNull(event);
|
|
}
|
|
|
|
@Test
|
|
void given_storedUser_when_getPlayer_should_returnPlayer()
|
|
{
|
|
final User user =
|
|
User.of("testName");
|
|
final UserRepository repository = mock(UserRepository.class);
|
|
when(repository.findUserById(any(UserId.class)))
|
|
.thenReturn(user);
|
|
|
|
final User result = new UserService(repository).getPlayer(UserId.of("12345"));
|
|
|
|
assertNotNull(result);
|
|
}
|
|
|
|
@Test
|
|
void given_storedUser_when_getSmallPlayer_should_returnSmallPlayer()
|
|
{
|
|
final User user =
|
|
new User(UserId.of("12345"), "testName");
|
|
final UserRepository repository = mock(UserRepository.class);
|
|
when(repository.findUserById(any(UserId.class)))
|
|
.thenReturn(user);
|
|
|
|
final UserRequest result = new de.fd.fh.server.user.UserService(repository).getSmallPlayer(UserId.of("12345"));
|
|
|
|
assertNotNull(result);
|
|
assertEquals("12345", result.getId(), "Wrong UserId");
|
|
assertEquals("testName", result.getName(), "Wrong Name");
|
|
|
|
}
|
|
|
|
@Override
|
|
public void update(Observable o, Object arg)
|
|
{
|
|
event = arg;
|
|
}
|
|
}
|