diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java index c5b63939..db71d24c 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java @@ -109,6 +109,9 @@ public class PersonService { @Transactional public Person createPerson(PersonUpdateDTO dto) { + if (dto.getPersonType() == PersonType.SKIP) { + throw DomainException.badRequest(ErrorCode.INVALID_PERSON_TYPE, "SKIP is not a valid person type for manual creation"); + } validateYears(dto.getBirthYear(), dto.getDeathYear()); Person person = Person.builder() .personType(dto.getPersonType()) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java index 692e2596..cb059e4e 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java @@ -128,6 +128,17 @@ class PersonServiceTest { assertThat(result.getPersonType()).isEqualTo(PersonType.INSTITUTION); } + @Test + void createPerson_dto_throwsInvalidPersonType_whenSkip() { + PersonUpdateDTO dto = new PersonUpdateDTO(); + dto.setFirstName("Anna"); dto.setLastName("Test"); dto.setPersonType(PersonType.SKIP); + + assertThatThrownBy(() -> personService.createPerson(dto)) + .isInstanceOf(DomainException.class) + .extracting(e -> ((DomainException) e).getStatus().value()) + .isEqualTo(400); + } + @Test void createPerson_dto_persistsTitle() { when(personRepository.save(any())).thenAnswer(inv -> inv.getArgument(0));