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 3351fd61..71e0dff8 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/PersonServiceTest.java @@ -277,6 +277,46 @@ class PersonServiceTest { .contains("Frau"); } + @Test + void updatePerson_doesNotPublishEvent_whenOnlyAliasChanges() { + UUID id = UUID.randomUUID(); + Person existing = Person.builder() + .id(id).firstName("Auguste").lastName("Raddatz") + .personType(PersonType.PERSON).alias("old alias").build(); + + when(personRepository.findById(id)).thenReturn(Optional.of(existing)); + when(personRepository.save(any())).thenAnswer(inv -> inv.getArgument(0)); + + PersonUpdateDTO dto = new PersonUpdateDTO(); + dto.setPersonType(PersonType.PERSON); + dto.setFirstName("Auguste"); dto.setLastName("Raddatz"); + dto.setAlias("new alias"); + + personService.updatePerson(id, dto); + + verify(eventPublisher, never()).publishEvent(any(PersonDisplayNameChangedEvent.class)); + } + + @Test + void updatePerson_doesNotPublishEvent_whenOnlyNotesChanges() { + UUID id = UUID.randomUUID(); + Person existing = Person.builder() + .id(id).firstName("Auguste").lastName("Raddatz") + .personType(PersonType.PERSON).notes("first note").build(); + + when(personRepository.findById(id)).thenReturn(Optional.of(existing)); + when(personRepository.save(any())).thenAnswer(inv -> inv.getArgument(0)); + + PersonUpdateDTO dto = new PersonUpdateDTO(); + dto.setPersonType(PersonType.PERSON); + dto.setFirstName("Auguste"); dto.setLastName("Raddatz"); + dto.setNotes("revised note"); + + personService.updatePerson(id, dto); + + verify(eventPublisher, never()).publishEvent(any(PersonDisplayNameChangedEvent.class)); + } + // ─── findOrCreateByAlias ───────────────────────────────────────────────── @Test