feat: UserService TDD

This commit is contained in:
Piotr Dec 2024-05-22 19:14:08 +02:00
parent 3121caf8f7
commit 7207e9b256
Signed by: stawros
GPG key ID: F89F27AD8F881A91
2 changed files with 84 additions and 0 deletions

View file

@ -0,0 +1,21 @@
package eu.ztsh.wymiana.service;
import eu.ztsh.wymiana.model.User;
import eu.ztsh.wymiana.web.model.UserCreateRequest;
import jakarta.validation.Valid;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class UserService {
public User create(@Valid UserCreateRequest request) {
throw new IllegalStateException("Not impplemented yet");
}
public Optional<User> get(String pesel) {
throw new IllegalStateException("Not impplemented yet");
}
}

View file

@ -0,0 +1,63 @@
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.util.UserMapper;
import eu.ztsh.wymiana.web.model.UserCreateRequest;
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 = new UserService();
@Autowired
public UserServiceTest(UserRepository userRepository) {
super(userRepository);
}
@Test
void createNewUserTest() {
userService.create(createRequest());
var entity = EntityCreator.user().build();
expect(entity);
}
@Test
void createDuplicatedUser() {
userService.create(createRequest());
assertThatThrownBy(() -> userService.create(createRequest()))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("Duplicated PESEL: %s".formatted(EntityCreator.Constants.PESEL));
}
@Test
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();
}
private UserCreateRequest createRequest() {
return new UserCreateRequest(EntityCreator.Constants.NAME, EntityCreator.Constants.SURNAME,
EntityCreator.Constants.PESEL, 20.10);
}
}