@Test public void testActionDescriptorForRequestBody() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .updateThing(1, (Thing) null)) .rel("event") .build(); Assert.assertEquals("Link: <http://example.com/things/1>; rel=\"event\"", affordance.toString()); final ActionDescriptor actionDescriptor = affordance.getActionDescriptors() .get(0); final ActionInputParameter thingParameter = actionDescriptor.getRequestBody(); Assert.assertEquals("Thing", ((Class) thingParameter.getGenericParameterType()).getSimpleName()); Assert.assertThat(thingParameter.isRequestBody(), Matchers.is(true)); Assert.assertEquals("updateThing", actionDescriptor.getActionName()); }
@Test public void testWithSingleRel() throws Exception { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"", affordance.toString()); }
@Test public void testWithAnchor() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withAnchor("http://api.example.com/api") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; anchor=\"http://api.example.com/api\"", affordance.toString()); }
@Test public void testWithType() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withType("application/pdf") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; type=\"application/pdf\"", affordance.toString()); }
@Test public void testWithMedia() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withMedia("qhd") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; media=\"qhd\"", affordance.toString()); }
@Test public void testWithTitle() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withTitle("my-title") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; title=\"my-title\"", affordance.toString()); }
@Test public void testWithTitleStar() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withTitleStar("UTF-8'de'n%c3%a4chstes%20Kapitel") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; " + "title*=\"UTF-8'de'n%c3%a4chstes%20Kapitel\"", affordance.toString()); }
@Test public void testBuild() throws Exception { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .rel("next") .rel("thing") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next thing\"", affordance.toString()); }
@Test public void testWithHreflang() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withHreflang("en-us") .withHreflang("de") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; hreflang=\"en-us\"; hreflang=\"de\"", affordance.toString()); }
@Test public void testBuildNoArgs() throws Exception { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .rel("next") .rel("thing") .reverseRel("reverted", "for-hal") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next thing for-hal\"; rev=\"reverted\"", affordance.toString()); }
@Test public void testWithLinkParam() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .createThing(new Thing())) .withLinkParam("param1", "foo") .withLinkParam("param1", "bar") .withLinkParam("param2", "baz") .rel("next") .build(); Assert.assertEquals("Link: <http://example.com/things>; rel=\"next\"; param1=\"foo\"; param1=\"bar\"; " + "param2=\"baz\"", affordance.toString()); }
@Test public void testActionDescriptorForRequestParams() { final Affordance affordance = AffordanceBuilder.linkTo(AffordanceBuilder.methodOn(DummyController.class) .updateThing(1, (EventStatusType) null)) .rel("eventStatus") .build(); Assert.assertEquals("Link-Template: <http://example.com/things/1/eventStatus{?eventStatus}>; " + "rel=\"eventStatus\"", affordance.toString()); final ActionDescriptor actionDescriptor = affordance.getActionDescriptors() .get(0); Assert.assertThat((EventStatusType[]) actionDescriptor.getActionInputParameter("eventStatus") .getPossibleValues(actionDescriptor), Matchers.arrayContainingInAnyOrder( EventStatusType.EVENT_CANCELLED, EventStatusType.EVENT_POSTPONED, EventStatusType.EVENT_RESCHEDULED, EventStatusType.EVENT_SCHEDULED)); Assert.assertEquals("updateThing", actionDescriptor.getActionName()); }