Skip to content
Snippets Groups Projects
Commit d7db5ffa authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-2859 Kein createdBy link bei system manager user'...

Merge pull request 'OZG-2859 Kein createdBy link bei system manager user' (#90) from OZG-2859_automatische_email_user into master

Reviewed-on: https://git.ozg-sh.de/mgm/goofy/pulls/90
parents 8eebd96f 9f0dd8d2
Branches
Tags
No related merge requests found
......@@ -2,6 +2,7 @@ package de.itvsh.goofy.historie;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
......@@ -17,19 +18,35 @@ import de.itvsh.goofy.common.user.UserProfileController;
@Component
class HistorieModelAssembler implements RepresentationModelAssembler<Command, EntityModel<Command>> {
static final String SYSTEM_NOTIFICATION_MANAGER_PREFIX = "system-notification_manager";
static final String REL_ASSIGNED_TO = "assignedTo";
static final String ASSIGNED_TO_BODY_FIELD = "assignedTo";
@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 (isSystemNotificationUser(entity)) {
return entity.toBuilder().createdBy(null).build();
}
return entity;
}
private boolean isSystemNotificationUser(Command entity) {
return Objects.nonNull(entity.getCreatedBy()) && entity.getCreatedBy().toString().startsWith(SYSTEM_NOTIFICATION_MANAGER_PREFIX);
}
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)));
......
package de.itvsh.goofy.historie;
import static org.assertj.core.api.Assertions.*;
import java.util.Map;
import org.junit.jupiter.api.DisplayName;
......@@ -9,13 +11,16 @@ 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 {
private static final String USER_PROFILES_API_PATH = "/api/userProfiles/";
private static final String CREATED_BY = "createdBy";
@InjectMocks
private HistorieModelAssembler modelAssembler;
......@@ -28,14 +33,6 @@ class HistorieModelAssemblerTest {
assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref).isEqualTo(COMMAND_SINGLE_PATH);
}
@Test
void shouldHaveCreatedByLink() {
var model = modelAssembler.toModel(CommandTestFactory.create());
assertThat(model.getLink("createdBy")).isPresent().get().extracting(Link::getHref)
.isEqualTo("/api/userProfiles/" + UserProfileTestFactory.ID);
}
@DisplayName("AssignedTo Link")
@Nested
class TestAssignedToLink {
......@@ -46,7 +43,7 @@ class HistorieModelAssemblerTest {
.body(Map.of(HistorieModelAssembler.ASSIGNED_TO_BODY_FIELD, UserProfileTestFactory.ID)).build());
assertThat(model.getLink(HistorieModelAssembler.REL_ASSIGNED_TO)).isPresent().get().extracting(Link::getHref)
.isEqualTo("/api/userProfiles/" + UserProfileTestFactory.ID);
.isEqualTo(USER_PROFILES_API_PATH + UserProfileTestFactory.ID);
}
@Test
......@@ -56,4 +53,33 @@ 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(CREATED_BY)).isPresent().get().extracting(Link::getHref)
.isEqualTo(USER_PROFILES_API_PATH + UserProfileTestFactory.ID);
}
@Test
void shouldNotExistingAtSystemNotificationMAnager() {
var model = modelAssembler
.toModel(CommandTestFactory.createBuilder().createdBy(UserId.from(HistorieModelAssembler.SYSTEM_NOTIFICATION_MANAGER_PREFIX))
.build());
assertThat(model.getLink(CREATED_BY)).isNotPresent();
}
@Test
void shouldNotBePresentOnNullValue() {
var model = modelAssembler.toModel(CommandTestFactory.createBuilder().createdBy(null).build());
assertThat(model.getLink(CREATED_BY)).isNotPresent();
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment