/** * Copyright (c) 2013-2016, The SeedStack authors <http://seedstack.org> * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.seedstack.seed.rest.hal; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import org.assertj.core.api.Assertions; import org.assertj.core.util.Lists; import org.junit.Test; import java.io.ByteArrayOutputStream; import java.util.List; public class HalRepresentationTest { @Test public void test_hal_links() { HalRepresentation halRepresentation = new HalRepresentation(); halRepresentation.link("curies", new Link("http://docs.acme.com/relations/{rel}").templated().name("acme")); Assertions.assertThat(halRepresentation.getLink("curies")).isInstanceOf(Link.class); halRepresentation.link("curies", new Link("http://example.org/{rel}").templated().name("example")); Assertions.assertThat(halRepresentation.getLink("curies")).isInstanceOf(List.class); Assertions.assertThat(((List<?>) halRepresentation.getLink("curies"))).hasSize(2); halRepresentation.link("curies", new Link("http://example2.org/{rel}").templated().name("example2")); Assertions.assertThat(((List<?>) halRepresentation.getLink("curies"))).hasSize(3); } private static final String EXPECTED = "{\"_links\":{\"objects\":{\"href\":\"/pok\"}},\"_embedded\":{\"objects\":[{\"name\":\"toto\"}]}}"; static class Person { @JsonProperty("name") private String name; public Person(String name) { this.name = name; } } @Test public void test_hal_link_serialization() throws Exception { HalRepresentation halRepresentation = new HalRepresentation(); halRepresentation.link("objects", "/pok"); halRepresentation.embedded("objects", Lists.newArrayList(new Person("toto"))); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ObjectMapper objectMapper = new ObjectMapper(); outputStream.write(objectMapper.writeValueAsBytes(halRepresentation)); outputStream.flush(); Assertions.assertThat(outputStream.toString()).isEqualTo(EXPECTED); } }