konta-walutowe/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java
2024-05-22 19:43:21 +02:00

63 lines
2 KiB
Java

package eu.ztsh.wymiana.service;
import eu.ztsh.wymiana.EntityCreator;
import eu.ztsh.wymiana.RepositoryBasedTest;
import eu.ztsh.wymiana.data.repository.UserRepository;
import eu.ztsh.wymiana.exception.UserAlreadyExistsException;
import eu.ztsh.wymiana.util.UserMapper;
import jakarta.transaction.Transactional;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
class UserServiceTest extends RepositoryBasedTest {
private final UserService userService;
@Autowired
public UserServiceTest(UserRepository userRepository) {
super(userRepository);
userService = new UserService(userRepository);
}
@Test
@Transactional
void createNewUserTest() {
userService.create(EntityCreator.userRequest());
var entity = EntityCreator.user().build();
expect(entity);
}
@Test
void createDuplicatedUser() {
var first = EntityCreator.userRequest();
var second = EntityCreator.userRequest();
userService.create(first);
assertThatThrownBy(() -> userService.create(second))
.isInstanceOf(UserAlreadyExistsException.class)
.hasMessage("User with PESEL %s already exists".formatted(EntityCreator.Constants.PESEL));
}
@Test
@Transactional
void getExistingUserTest() {
var entity = EntityCreator.user().build();
userRepository.save(entity);
var userOptional = userService.get(EntityCreator.Constants.PESEL);
var expected = UserMapper.entityToPojo(entity);
assertThat(userOptional)
.isNotEmpty()
.get()
.usingRecursiveComparison()
.isEqualTo(expected);
}
@Test
void getNonExistingUserTest() {
var userOptional = userService.get(EntityCreator.Constants.PESEL);
assertThat(userOptional).isEmpty();
}
}