From f4132edc2b1a5fbf8118bde831758602a1e19f50 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 25 Apr 2026 20:54:37 +0200 Subject: [PATCH] feat(persons): add personType to PersonUpdateDTO and wire into createPerson Co-Authored-By: Claude Sonnet 4.6 --- .../familienarchiv/dto/PersonUpdateDTO.java | 4 +++ .../familienarchiv/service/PersonService.java | 1 + .../service/PersonServiceTest.java | 26 +++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/dto/PersonUpdateDTO.java b/backend/src/main/java/org/raddatz/familienarchiv/dto/PersonUpdateDTO.java index b7026c70..b236811e 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/dto/PersonUpdateDTO.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/dto/PersonUpdateDTO.java @@ -1,10 +1,14 @@ package org.raddatz.familienarchiv.dto; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import lombok.Data; +import org.raddatz.familienarchiv.model.PersonType; @Data public class PersonUpdateDTO { + @NotNull + private PersonType personType; @Size(max = 50) private String title; @Size(max = 100) 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 e900dd4c..c5b63939 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/PersonService.java @@ -111,6 +111,7 @@ public class PersonService { public Person createPerson(PersonUpdateDTO dto) { validateYears(dto.getBirthYear(), dto.getDeathYear()); Person person = Person.builder() + .personType(dto.getPersonType()) .title(dto.getTitle() == null || dto.getTitle().isBlank() ? null : dto.getTitle().trim()) .firstName(dto.getFirstName()) .lastName(dto.getLastName()) 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 1095e93f..692e2596 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java @@ -114,6 +114,32 @@ class PersonServiceTest { assertThat(result.getAlias()).isEqualTo("Hans Müller"); } + // ─── personType + title in createPerson(PersonUpdateDTO) ───────────────── + + @Test + void createPerson_dto_persistsPersonType() { + when(personRepository.save(any())).thenAnswer(inv -> inv.getArgument(0)); + + PersonUpdateDTO dto = new PersonUpdateDTO(); + dto.setFirstName("Walter"); dto.setLastName("de Gruyter"); dto.setPersonType(PersonType.INSTITUTION); + + Person result = personService.createPerson(dto); + + assertThat(result.getPersonType()).isEqualTo(PersonType.INSTITUTION); + } + + @Test + void createPerson_dto_persistsTitle() { + when(personRepository.save(any())).thenAnswer(inv -> inv.getArgument(0)); + + PersonUpdateDTO dto = new PersonUpdateDTO(); + dto.setFirstName("Dr."); dto.setLastName("Müller"); dto.setTitle("Prof."); dto.setPersonType(PersonType.PERSON); + + Person result = personService.createPerson(dto); + + assertThat(result.getTitle()).isEqualTo("Prof."); + } + // ─── Phase 2.1: createPerson(PersonUpdateDTO) ───────────────────────────── @Test