diff --git a/goofy-server/src/main/java/de/itvsh/goofy/historie/HistorieModelAssembler.java b/goofy-server/src/main/java/de/itvsh/goofy/historie/HistorieModelAssembler.java index 8e5eaa28f998654080b36ba438a29fc960123a07..7dc4fdd07eab74384b9a28325e06bcaafba906a7 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/historie/HistorieModelAssembler.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/historie/HistorieModelAssembler.java @@ -23,13 +23,23 @@ class HistorieModelAssembler implements RepresentationModelAssembler<Command, En @Override public EntityModel<Command> toModel(Command entity) { - var modelBuilder = ModelBuilder.fromEntity(entity).addLink(linkTo(HistorieController.class).slash(entity.getId()).withSelfRel()); + var cleanCommand = unsetSystemUser(entity); + var modelBuilder = ModelBuilder.fromEntity(cleanCommand).addLink(linkTo(HistorieController.class).slash(cleanCommand.getId()).withSelfRel()); - addAssignedTo(entity, modelBuilder); + addAssignedTo(cleanCommand, modelBuilder); return modelBuilder.buildModel(); } + Command unsetSystemUser(Command entity) { + if (entity.getCreatedBy().toString().startsWith("system-notification_manager")) { + return entity.toBuilder().createdBy(null).build(); + } + + return entity; + + } + private void addAssignedTo(Command entity, ModelBuilder<Command> modelBuilder) { Optional.ofNullable(entity.getBody()).map(body -> body.get(ASSIGNED_TO_BODY_FIELD)) .ifPresent(assignedTo -> modelBuilder.addLink(linkTo(UserProfileController.class).slash(assignedTo).withRel(REL_ASSIGNED_TO))); diff --git a/goofy-server/src/test/java/de/itvsh/goofy/historie/HistorieModelAssemblerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/historie/HistorieModelAssemblerTest.java index 688517382f94b4ddb2126d06db34271886dafe14..3991ab5be8b981d92fe3a9d8648caa228e8d1f2d 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/historie/HistorieModelAssemblerTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/historie/HistorieModelAssemblerTest.java @@ -1,5 +1,7 @@ package de.itvsh.goofy.historie; +import static org.assertj.core.api.Assertions.*; + import java.util.Map; import org.junit.jupiter.api.DisplayName; @@ -9,9 +11,8 @@ import org.mockito.InjectMocks; import org.springframework.hateoas.IanaLinkRelations; import org.springframework.hateoas.Link; -import static org.assertj.core.api.Assertions.*; - import de.itvsh.goofy.common.command.CommandTestFactory; +import de.itvsh.goofy.common.user.UserId; import de.itvsh.goofy.common.user.UserProfileTestFactory; class HistorieModelAssemblerTest { @@ -56,4 +57,24 @@ class HistorieModelAssemblerTest { assertThat(model.getLink(HistorieModelAssembler.REL_ASSIGNED_TO)).isNotPresent(); } } + + @DisplayName("createdBy Link") + @Nested + class TestCreatedByLink { + @Test + void shouldExistingAtUser() { + var model = modelAssembler.toModel(CommandTestFactory.create()); + + assertThat(model.getLink("createdBy")).isPresent().get().extracting(Link::getHref) + .isEqualTo("/api/userProfiles/" + UserProfileTestFactory.ID); + } + + @Test + void shouldNotExistingAtSystemNotificationMAnager() { + var model = modelAssembler + .toModel(CommandTestFactory.createBuilder().createdBy(UserId.from("system-notification_manager-new_vorgang")).build()); + + assertThat(model.getLink("createdBy")).isNotPresent(); + } + } } \ No newline at end of file