From a506f9c0c6feee249f8fdbb1d8832c542b12cd64 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 2 Jun 2021 08:56:53 +0200 Subject: [PATCH] OZG-400 add ModelAssembler for UserProfile, providing self-link --- .../user/UserProfileModelAssembler.java | 13 +++--- .../user/UserProfileModelAssemblerTest.java | 43 +++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/common/user/UserProfileModelAssemblerTest.java diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserProfileModelAssembler.java b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserProfileModelAssembler.java index ab55f0bb91..df5ab9f7da 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserProfileModelAssembler.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserProfileModelAssembler.java @@ -1,5 +1,8 @@ package de.itvsh.goofy.common.user; +import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; + +import java.util.stream.Collectors; import java.util.stream.Stream; import org.springframework.hateoas.CollectionModel; @@ -12,13 +15,13 @@ class UserProfileModelAssembler implements RepresentationModelAssembler<UserProf @Override public EntityModel<UserProfile> toModel(UserProfile entity) { - // TODO Auto-generated method stub - return null; + return EntityModel.of(entity) + .add(linkTo(UserProfileController.class).slash(entity.getId()).withSelfRel()); } - public CollectionModel<EntityModel<UserProfile>> toCollectionModel(Stream<UserProfile> userProfile) { - // FIXME - return null; + public CollectionModel<EntityModel<UserProfile>> toCollectionModel(Stream<UserProfile> userProfiles) { + return CollectionModel.of(userProfiles.map(this::toModel).collect(Collectors.toList())) + .add(linkTo(UserProfileController.class).withSelfRel()); } } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserProfileModelAssemblerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserProfileModelAssemblerTest.java new file mode 100644 index 0000000000..1569eba131 --- /dev/null +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserProfileModelAssemblerTest.java @@ -0,0 +1,43 @@ +package de.itvsh.goofy.common.user; + +import static org.assertj.core.api.Assertions.*; + +import java.util.stream.Stream; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.springframework.hateoas.IanaLinkRelations; +import org.springframework.hateoas.Link; + +class UserProfileModelAssemblerTest { + + @InjectMocks + private UserProfileModelAssembler modelAssembler; + + @Nested + class ToModelTest { + + @Test + void shouldHaveSelfLink() { + var model = modelAssembler.toModel(UserProfileTestFactory.create()); + + assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref) + .isEqualTo(UserProfileController.BASE_PATH + "/" + UserProfileTestFactory.ID); + } + } + + @Nested + class ToCollectionModelTest { + + private Stream<UserProfile> profiles = Stream.of(UserProfileTestFactory.create()); + + @Test + void shouldHaveSelfLink() { + var model = modelAssembler.toCollectionModel(profiles); + + assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref) + .isEqualTo(UserProfileController.BASE_PATH); + } + } +} -- GitLab