From c7ef32e28d2e101877eabf643ae3d3e91c22f569 Mon Sep 17 00:00:00 2001 From: Piotr Dec Date: Wed, 22 May 2024 19:21:26 +0200 Subject: [PATCH] feat: Dedicated exception on user creation --- .../wymiana/exception/UserAlreadyExistsException.java | 11 +++++++++++ .../java/eu/ztsh/wymiana/service/UserService.java | 6 ++++++ .../java/eu/ztsh/wymiana/service/UserServiceTest.java | 8 +++++--- 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java diff --git a/src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java b/src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java new file mode 100644 index 0000000..659b495 --- /dev/null +++ b/src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java @@ -0,0 +1,11 @@ +package eu.ztsh.wymiana.exception; + +import eu.ztsh.wymiana.web.model.UserCreateRequest; + +public class UserAlreadyExistsException extends RuntimeException { + + public UserAlreadyExistsException(UserCreateRequest entity) { + super("User with PESEL %s already exists".formatted(entity.pesel())); + } + +} diff --git a/src/main/java/eu/ztsh/wymiana/service/UserService.java b/src/main/java/eu/ztsh/wymiana/service/UserService.java index 7b1e652..341112c 100644 --- a/src/main/java/eu/ztsh/wymiana/service/UserService.java +++ b/src/main/java/eu/ztsh/wymiana/service/UserService.java @@ -1,15 +1,21 @@ package eu.ztsh.wymiana.service; +import eu.ztsh.wymiana.data.repository.UserRepository; import eu.ztsh.wymiana.model.User; import eu.ztsh.wymiana.web.model.UserCreateRequest; import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.Optional; +@RequiredArgsConstructor @Service public class UserService { + private final UserRepository userRepository; + + public User create(@Valid UserCreateRequest request) { 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 index 0ef2abc..4dd6908 100644 --- a/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java +++ b/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java @@ -3,6 +3,7 @@ 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 eu.ztsh.wymiana.web.model.UserCreateRequest; import org.junit.jupiter.api.Test; @@ -13,11 +14,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; class UserServiceTest extends RepositoryBasedTest { - private final UserService userService = new UserService(); + private final UserService userService; @Autowired public UserServiceTest(UserRepository userRepository) { super(userRepository); + userService = new UserService(userRepository); } @Test @@ -33,8 +35,8 @@ class UserServiceTest extends RepositoryBasedTest { var second = createRequest(); userService.create(first); assertThatThrownBy(() -> userService.create(second)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessage("Duplicated PESEL: %s".formatted(EntityCreator.Constants.PESEL)); + .isInstanceOf(UserAlreadyExistsException.class) + .hasMessage("User with PESEL %s already exists".formatted(EntityCreator.Constants.PESEL)); } @Test