From 7207e9b2561f56322b06788a440714be904c0bfd Mon Sep 17 00:00:00 2001 From: Piotr Dec Date: Wed, 22 May 2024 19:14:08 +0200 Subject: [PATCH] feat: UserService TDD --- .../eu/ztsh/wymiana/service/UserService.java | 21 +++++++ .../ztsh/wymiana/service/UserServiceTest.java | 63 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/main/java/eu/ztsh/wymiana/service/UserService.java create mode 100644 src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java diff --git a/src/main/java/eu/ztsh/wymiana/service/UserService.java b/src/main/java/eu/ztsh/wymiana/service/UserService.java new file mode 100644 index 0000000..7b1e652 --- /dev/null +++ b/src/main/java/eu/ztsh/wymiana/service/UserService.java @@ -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 get(String pesel) { + throw new IllegalStateException("Not impplemented yet"); + } + +} diff --git a/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java b/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java new file mode 100644 index 0000000..7edb478 --- /dev/null +++ b/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java @@ -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); + } + +}