feat: Dedicated exception on user creation
This commit is contained in:
parent
52ae2789fc
commit
c7ef32e28d
3 changed files with 22 additions and 3 deletions
|
@ -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()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,15 +1,21 @@
|
||||||
package eu.ztsh.wymiana.service;
|
package eu.ztsh.wymiana.service;
|
||||||
|
|
||||||
|
import eu.ztsh.wymiana.data.repository.UserRepository;
|
||||||
import eu.ztsh.wymiana.model.User;
|
import eu.ztsh.wymiana.model.User;
|
||||||
import eu.ztsh.wymiana.web.model.UserCreateRequest;
|
import eu.ztsh.wymiana.web.model.UserCreateRequest;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Service
|
@Service
|
||||||
public class UserService {
|
public class UserService {
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
|
||||||
public User create(@Valid UserCreateRequest request) {
|
public User create(@Valid UserCreateRequest request) {
|
||||||
throw new IllegalStateException("Not impplemented yet");
|
throw new IllegalStateException("Not impplemented yet");
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.ztsh.wymiana.service;
|
||||||
import eu.ztsh.wymiana.EntityCreator;
|
import eu.ztsh.wymiana.EntityCreator;
|
||||||
import eu.ztsh.wymiana.RepositoryBasedTest;
|
import eu.ztsh.wymiana.RepositoryBasedTest;
|
||||||
import eu.ztsh.wymiana.data.repository.UserRepository;
|
import eu.ztsh.wymiana.data.repository.UserRepository;
|
||||||
|
import eu.ztsh.wymiana.exception.UserAlreadyExistsException;
|
||||||
import eu.ztsh.wymiana.util.UserMapper;
|
import eu.ztsh.wymiana.util.UserMapper;
|
||||||
import eu.ztsh.wymiana.web.model.UserCreateRequest;
|
import eu.ztsh.wymiana.web.model.UserCreateRequest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -13,11 +14,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
class UserServiceTest extends RepositoryBasedTest {
|
class UserServiceTest extends RepositoryBasedTest {
|
||||||
|
|
||||||
private final UserService userService = new UserService();
|
private final UserService userService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public UserServiceTest(UserRepository userRepository) {
|
public UserServiceTest(UserRepository userRepository) {
|
||||||
super(userRepository);
|
super(userRepository);
|
||||||
|
userService = new UserService(userRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -33,8 +35,8 @@ class UserServiceTest extends RepositoryBasedTest {
|
||||||
var second = createRequest();
|
var second = createRequest();
|
||||||
userService.create(first);
|
userService.create(first);
|
||||||
assertThatThrownBy(() -> userService.create(second))
|
assertThatThrownBy(() -> userService.create(second))
|
||||||
.isInstanceOf(IllegalArgumentException.class)
|
.isInstanceOf(UserAlreadyExistsException.class)
|
||||||
.hasMessage("Duplicated PESEL: %s".formatted(EntityCreator.Constants.PESEL));
|
.hasMessage("User with PESEL %s already exists".formatted(EntityCreator.Constants.PESEL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue