org.seedstack.seed.rest.hal.HalRepresentationTest.java Source code

Java tutorial

Introduction

Here is the source code for org.seedstack.seed.rest.hal.HalRepresentationTest.java

Source

/**
 * 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);
    }
}