From fe1101f9d5766bd95909afd3673d1f6f3ddb6b3d Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 25 Apr 2026 21:02:39 +0200 Subject: [PATCH] feat(persons): updatePerson rejects SKIP with INVALID_PERSON_TYPE Co-Authored-By: Claude Sonnet 4.6 --- .../familienarchiv/service/PersonService.java | 3 +++ .../familienarchiv/service/PersonServiceTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) 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 10bdda42..93ccdd5e 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java @@ -140,6 +140,9 @@ public class PersonService { @Transactional public Person updatePerson(UUID id, PersonUpdateDTO dto) { + if (dto.getPersonType() == PersonType.SKIP) { + throw DomainException.badRequest(ErrorCode.INVALID_PERSON_TYPE, "SKIP is not a valid person type for manual editing"); + } validateYears(dto.getBirthYear(), dto.getDeathYear()); Person person = personRepository.findById(id) .orElseThrow(() -> DomainException.notFound(ErrorCode.PERSON_NOT_FOUND, "Person not found: " + id)); 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 8a29a3bc..da2fdde4 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java @@ -184,6 +184,19 @@ class PersonServiceTest { // ─── updatePerson (personType) ─────────────────────────────────────────── + @Test + void updatePerson_throwsInvalidPersonType_whenSkip() { + UUID id = UUID.randomUUID(); + + PersonUpdateDTO dto = new PersonUpdateDTO(); + dto.setFirstName("Anna"); dto.setLastName("Alt"); dto.setPersonType(PersonType.SKIP); + + assertThatThrownBy(() -> personService.updatePerson(id, dto)) + .isInstanceOf(DomainException.class) + .extracting(e -> ((DomainException) e).getStatus().value()) + .isEqualTo(400); + } + @Test void updatePerson_persistsPersonType() { UUID id = UUID.randomUUID();