/** * 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.internal.hal; import org.junit.Test; import org.seedstack.seed.rest.hal.HalDefaultRepresentation; import org.seedstack.seed.rest.hal.Link; import org.seedstack.seed.rest.internal.hal.fixture.OrderRepresentation; import org.seedstack.seed.rest.internal.hal.fixture.OrdersRepresentation; import org.seedstack.seed.rest.internal.hal.fixture.RepresentationFactory; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; public class HalBuilderTest { @Test public void build_hal_representation() { HalDefaultRepresentation halRep = new RepresentationFactory().createOrders(); // --------------------------------------------------- // Check orders assertThat(halRep.getResource()).isNotNull(); assertThat(halRep.getResource()).isInstanceOf(OrdersRepresentation.class); assertThat(((OrdersRepresentation) halRep.getResource()).getCurrentlyProcessing()).isEqualTo(14); assertThat(((OrdersRepresentation) halRep.getResource()).getShippedToday()).isEqualTo(20); assertThat(halRep.getLinks()).hasSize(3); assertThat(((Link) halRep.getLink("self")).getHref()).isEqualTo("/rest/orders"); assertThat(((Link)halRep.getLink("next")).getHref()).isEqualTo("/rest/orders?page=2"); assertThat(((Link)halRep.getLink("find")).getHref()).isEqualTo("/rest/orders{?id}"); assertThat(((Link)halRep.getLink("find")).isTemplated()).isTrue(); assertThat(halRep.getEmbedded()).isNotNull(); assertThat((List) halRep.getEmbedded().get("orders")).hasSize(2); // check embedded 1 HalDefaultRepresentation halRep1 = ((HalDefaultRepresentation) ((List) halRep.getEmbedded().get("orders")).get(0)); assertThat(halRep1.getLinks()).hasSize(3); assertThat(((Link)halRep1.getLink("self")).getHref()).isEqualTo("/rest/order/123"); assertThat(((Link)halRep1.getLink("basket")).getHref()).isEqualTo("/rest/baskets/98712"); assertThat(((Link)halRep1.getLink("customer")).getHref()).isEqualTo("/rest/customers/7809"); OrderRepresentation order1 = (OrderRepresentation) halRep1.getResource(); assertThat(order1.getTotal()).isEqualTo(30.00f); assertThat(order1.getCurrency()).isEqualTo("USD"); assertThat(order1.getStatus()).isEqualTo("shipped"); // check embedded 2 HalDefaultRepresentation halRep2 = ((HalDefaultRepresentation) ((List) halRep.getEmbedded().get("orders")).get(1)); assertThat(halRep2.getLinks()).hasSize(3); assertThat(((Link)halRep2.getLink("self")).getHref()).isEqualTo("/rest/order/124"); assertThat(((Link)halRep2.getLink("basket")).getHref()).isEqualTo("/rest/baskets/97213"); assertThat(((Link)halRep2.getLink("customer")).getHref()).isEqualTo("/rest/customers/12369"); OrderRepresentation order2 = (OrderRepresentation) halRep2.getResource(); assertThat(order2.getTotal()).isEqualTo(20.00f); assertThat(order2.getCurrency()).isEqualTo("USD"); assertThat(order2.getStatus()).isEqualTo("processing"); } }