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 ab55f0bb912f45cc4f8172290d0a1e461b34a31f..df5ab9f7dacb6e4f449f3bdd9ebae957d81a51f1 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 0000000000000000000000000000000000000000..1569eba1310056eb0c597117a2938b10dc2b2659 --- /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); + } + } +}