feat(persons): add personType to PersonUpdateDTO and wire into createPerson

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-25 20:54:37 +02:00
committed by marcel
parent d952fab4cd
commit f4132edc2b
3 changed files with 31 additions and 0 deletions

View File

@@ -1,10 +1,14 @@
package org.raddatz.familienarchiv.dto; package org.raddatz.familienarchiv.dto;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
import lombok.Data; import lombok.Data;
import org.raddatz.familienarchiv.model.PersonType;
@Data @Data
public class PersonUpdateDTO { public class PersonUpdateDTO {
@NotNull
private PersonType personType;
@Size(max = 50) @Size(max = 50)
private String title; private String title;
@Size(max = 100) @Size(max = 100)

View File

@@ -111,6 +111,7 @@ public class PersonService {
public Person createPerson(PersonUpdateDTO dto) { public Person createPerson(PersonUpdateDTO dto) {
validateYears(dto.getBirthYear(), dto.getDeathYear()); validateYears(dto.getBirthYear(), dto.getDeathYear());
Person person = Person.builder() Person person = Person.builder()
.personType(dto.getPersonType())
.title(dto.getTitle() == null || dto.getTitle().isBlank() ? null : dto.getTitle().trim()) .title(dto.getTitle() == null || dto.getTitle().isBlank() ? null : dto.getTitle().trim())
.firstName(dto.getFirstName()) .firstName(dto.getFirstName())
.lastName(dto.getLastName()) .lastName(dto.getLastName())

View File

@@ -114,6 +114,32 @@ class PersonServiceTest {
assertThat(result.getAlias()).isEqualTo("Hans Müller"); 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) ───────────────────────────── // ─── Phase 2.1: createPerson(PersonUpdateDTO) ─────────────────────────────
@Test @Test