ISIS-233: starting to test service action invoke.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/8c3c71a6 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/8c3c71a6 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/8c3c71a6 Branch: refs/heads/master Commit: 8c3c71a6cae6d59acc3a70c3ef3ff2d14c59bb54 Parents: c0e6f1d Author: Dan Haywood <[email protected]> Authored: Wed Mar 6 00:35:56 2013 +0000 Committer: Dan Haywood <[email protected]> Committed: Sat Apr 27 18:57:42 2013 +0100 ---------------------------------------------------------------------- .../restfulobjects/applib/JsonRepresentation.java | 31 +++++ .../domainobjects/ObjectActionRepresentation.java | 3 +- .../restfulobjects/tck/RepresentationMatchers.java | 14 ++ .../isis/viewer/restfulobjects/tck/Util.java | 79 ++++++++++++ .../DomainServiceTest_req_header_accept.java | 1 + ...ainServiceTest_req_queryarg_xrodomainmodel.java | 1 + ...ainServiceTest_req_queryarg_xrofollowlinks.java | 13 +-- .../DomainServiceTest_resp_representation.java | 3 - .../tck/domainservice/serviceId/Util.java | 49 ------- .../invoke/DomainServiceTest_action_invoke.java | 98 +++++++++++++++ .../DomainServiceTest_invoke_TOREFACTOR.java | 21 +--- 11 files changed, 230 insertions(+), 83 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/JsonRepresentation.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/JsonRepresentation.java b/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/JsonRepresentation.java index 1efc2ea..17c0cad 100644 --- a/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/JsonRepresentation.java +++ b/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/JsonRepresentation.java @@ -1121,6 +1121,36 @@ public class JsonRepresentation { return buf.toString(); } + + // /////////////////////////////////////////////////////////////////////// + // equals and hashcode + // /////////////////////////////////////////////////////////////////////// + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((jsonNode == null) ? 0 : jsonNode.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + JsonRepresentation other = (JsonRepresentation) obj; + if (jsonNode == null) { + if (other.jsonNode != null) + return false; + } else if (!jsonNode.equals(other.jsonNode)) + return false; + return true; + } + // /////////////////////////////////////////////////////////////////////// // toString // /////////////////////////////////////////////////////////////////////// @@ -1130,4 +1160,5 @@ public class JsonRepresentation { return jsonNode.toString(); } + } http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/ObjectActionRepresentation.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/ObjectActionRepresentation.java b/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/ObjectActionRepresentation.java index 019adb0..54af825 100644 --- a/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/ObjectActionRepresentation.java +++ b/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/ObjectActionRepresentation.java @@ -19,6 +19,7 @@ package org.apache.isis.viewer.restfulobjects.applib.domainobjects; import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.Rel; import org.codehaus.jackson.JsonNode; public class ObjectActionRepresentation extends AbstractObjectMemberRepresentation { @@ -28,7 +29,7 @@ public class ObjectActionRepresentation extends AbstractObjectMemberRepresentati } public LinkRepresentation getInvoke() { - return getLinkWithRel("invoke"); + return getLinkWithRel(Rel.INVOKE); } } http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/RepresentationMatchers.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/RepresentationMatchers.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/RepresentationMatchers.java index b8a0c2c..6b1957d 100644 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/RepresentationMatchers.java +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/RepresentationMatchers.java @@ -39,6 +39,7 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; import org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.AbstractMatcherBuilder; +import org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.LinkMatcherBuilder; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; @@ -172,6 +173,7 @@ public class RepresentationMatchers { private String typeParameterName; private String typeParameterValue; private String selfHref; + private JsonRepresentation arguments; private LinkMatcherBuilder(final RestfulClient client) { super(client); @@ -218,6 +220,11 @@ public class RepresentationMatchers { return this; } + public LinkMatcherBuilder arguments(JsonRepresentation arguments) { + this.arguments = arguments; + return this; + } + public LinkMatcherBuilder novalue() { if (valueMatcher != null) { throw new IllegalStateException("cannot assert on both there being a value and there not being a value"); @@ -275,6 +282,10 @@ public class RepresentationMatchers { description.appendText(" with media type parameter '").appendText(typeParameterName).appendText("=").appendText(typeParameterValue).appendText("'"); } + if (arguments != null) { + description.appendText(" with arguments").appendText(arguments.toString()); + } + if (novalue != null && novalue) { description.appendText(" with no value"); } @@ -335,6 +346,9 @@ public class RepresentationMatchers { if (novalue != null && novalue && link.getValue() != null) { return false; } + if (arguments != null && !arguments.equals(link.getArguments())) { + return false; + } if (valueMatcher != null && !valueMatcher.matches(link.getValue())) { return false; } http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/Util.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/Util.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/Util.java new file mode 100644 index 0000000..f1fd706 --- /dev/null +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/Util.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.isis.viewer.restfulobjects.tck; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.io.IOException; + +import javax.ws.rs.core.Response; + +import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.Rel; +import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ListRepresentation; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; + +public class Util { + + private Util(){} + + public static String givenLinkToService(RestfulClient restfulClient, String serviceId) throws JsonParseException, JsonMappingException, IOException { + + final DomainServiceResource resource = restfulClient.getDomainServiceResource(); + final Response response = resource.services(); + final ListRepresentation services = RestfulResponse.<ListRepresentation> ofT(response).getEntity(); + + final String href = services.getRepresentation("value[rel=" + Rel.SERVICE.getName() + ";serviceId=\"" + + serviceId + + "\"]").asLink().getHref(); + return href; + } + + public static String givenHrefToService(RestfulClient client, final String serviceId) throws JsonParseException, JsonMappingException, IOException { + final DomainServiceResource resource = client.getDomainServiceResource(); + final Response response = resource.services(); + final ListRepresentation services = RestfulResponse.<ListRepresentation> ofT(response).getEntity(); + + return services.getRepresentation("value[rel=urn:org.restfulobjects:rels/service;serviceId=\"%s\"]", serviceId).asLink().getHref(); + } + + public static JsonRepresentation givenAction(RestfulClient client, final String serviceId, final String actionId) throws JsonParseException, JsonMappingException, IOException { + final String href = givenHrefToService(client, serviceId); + + final RestfulRequest request = client.createRequest(RestfulHttpMethod.GET, href).withArg(RequestParameter.FOLLOW_LINKS, "members[%s].links[rel=%s]", actionId, Rel.DETAILS.getName()); + final RestfulResponse<DomainObjectRepresentation> restfulResponse = request.executeT(); + + assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK)); + final DomainObjectRepresentation repr = restfulResponse.getEntity(); + + final JsonRepresentation actionLinkRepr = repr.getAction(actionId); + return actionLinkRepr.getRepresentation("links[rel=%s].value", Rel.DETAILS.getName()); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_header_accept.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_header_accept.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_header_accept.java index cfde1b2..a4b4a80 100644 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_header_accept.java +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_header_accept.java @@ -33,6 +33,7 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpS import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation; import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ListRepresentation; import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; import org.jboss.resteasy.client.ClientRequest; import org.jboss.resteasy.client.ClientResponse; import org.junit.Before; http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrodomainmodel.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrodomainmodel.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrodomainmodel.java index 970eac0..cc95598 100644 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrodomainmodel.java +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrodomainmodel.java @@ -32,6 +32,7 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.Reques import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation; import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrofollowlinks.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrofollowlinks.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrofollowlinks.java index 4021e98..a853226 100644 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrofollowlinks.java +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_req_queryarg_xrofollowlinks.java @@ -26,7 +26,6 @@ import static org.junit.Assert.assertThat; import java.io.IOException; -import javax.ws.rs.core.Response; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; @@ -45,9 +44,9 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter; import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ListRepresentation; import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; + import static org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.*; public class DomainServiceTest_req_queryarg_xrofollowlinks { @@ -163,14 +162,8 @@ public class DomainServiceTest_req_queryarg_xrofollowlinks { assertThat(actionRepr.getRepresentation("links[rel="+Rel.DETAILS.getName()+"].value"), is(not(nullValue()))); // also followed } - - private String givenHrefToService(final String serviceId) throws JsonParseException, JsonMappingException, IOException { - final DomainServiceResource resource = client.getDomainServiceResource(); - final Response response = resource.services(); - final ListRepresentation services = RestfulResponse.<ListRepresentation> ofT(response).getEntity(); - - return services.getRepresentation("value[rel=urn:org.restfulobjects:rels/service;serviceId=\"%s\"]", serviceId).asLink().getHref(); + return Util.givenHrefToService(client, serviceId); } } http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_resp_representation.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_resp_representation.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_resp_representation.java index fea89c7..95fe1cd 100644 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_resp_representation.java +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/DomainServiceTest_resp_representation.java @@ -23,13 +23,11 @@ import static org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.a import static org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.isArray; import static org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.isLink; import static org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.isMap; -import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.endsWith; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; -import javax.ws.rs.HttpMethod; import javax.ws.rs.core.Response; import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; @@ -44,7 +42,6 @@ import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceR import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; import org.hamcrest.Matchers; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/Util.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/Util.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/Util.java deleted file mode 100644 index f0af94e..0000000 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/Util.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.isis.viewer.restfulobjects.tck.domainservice.serviceId; - -import java.io.IOException; - -import javax.ws.rs.core.Response; - -import org.apache.isis.viewer.restfulobjects.applib.Rel; -import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; -import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ListRepresentation; -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.map.JsonMappingException; - -public class Util { - - private Util(){} - - public static String givenLinkToService(RestfulClient restfulClient, String serviceId) throws JsonParseException, JsonMappingException, IOException { - - final DomainServiceResource resource = restfulClient.getDomainServiceResource(); - final Response response = resource.services(); - final ListRepresentation services = RestfulResponse.<ListRepresentation> ofT(response).getEntity(); - - final String href = services.getRepresentation("value[rel=" + Rel.SERVICE.getName() + ";serviceId=\"" + - serviceId + - "\"]").asLink().getHref(); - return href; - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/action/invoke/DomainServiceTest_action_invoke.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/action/invoke/DomainServiceTest_action_invoke.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/action/invoke/DomainServiceTest_action_invoke.java new file mode 100644 index 0000000..f7ce101 --- /dev/null +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainservice/serviceId/action/invoke/DomainServiceTest_action_invoke.java @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.isis.viewer.restfulobjects.tck.domainservice.serviceId.action.invoke; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertThat; + +import java.io.IOException; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.Rel; +import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ActionResultRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ListRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ObjectActionRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ActionResultRepresentation.ResultType; +import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; + +import static org.apache.isis.viewer.restfulobjects.tck.RepresentationMatchers.*; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; +import org.hamcrest.Matchers; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +public class DomainServiceTest_action_invoke { + + @Rule + public IsisWebServerRule webServerRule = new IsisWebServerRule(); + + private RestfulClient client; + + @SuppressWarnings("unused") + private DomainServiceResource resource; + + @Before + public void setUp() throws Exception { + client = webServerRule.getClient(); + + resource = client.getDomainServiceResource(); + } + + @Test + public void invokeQueryOnly_noArg_usingClientFollow_returning_list() throws Exception { + + // given + final JsonRepresentation givenAction = Util.givenAction(client, "ParentEntities", "list"); + final ObjectActionRepresentation actionRepr = givenAction.as(ObjectActionRepresentation.class); + + // when + final LinkRepresentation invokeLink = actionRepr.getInvoke(); + + // then + assertThat(invokeLink, isLink(client) + .rel(Rel.INVOKE) + .httpMethod(RestfulHttpMethod.GET) + .href(Matchers.endsWith(":39393/services/ParentEntities/actions/list/invoke")) + .arguments(JsonRepresentation.newMap()) + .build()); + + final RestfulResponse<ActionResultRepresentation> restfulResponse = client.followT(invokeLink); + final ActionResultRepresentation actionResultRepr = restfulResponse.getEntity(); + + assertThat(actionResultRepr.getResultType(), is(ResultType.LIST)); + + final ListRepresentation listRepr = actionResultRepr.getResult().as(ListRepresentation.class); + + assertThat(listRepr.getValue().size(), is(5)); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/8c3c71a6/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/zzztodo/domainservice/actioninvoke/DomainServiceTest_invoke_TOREFACTOR.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/zzztodo/domainservice/actioninvoke/DomainServiceTest_invoke_TOREFACTOR.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/zzztodo/domainservice/actioninvoke/DomainServiceTest_invoke_TOREFACTOR.java index 5626aa7..ded6ed4 100644 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/zzztodo/domainservice/actioninvoke/DomainServiceTest_invoke_TOREFACTOR.java +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/zzztodo/domainservice/actioninvoke/DomainServiceTest_invoke_TOREFACTOR.java @@ -62,30 +62,11 @@ public class DomainServiceTest_invoke_TOREFACTOR { @Before public void setUp() throws Exception { - final WebServer webServer = webServerRule.getWebServer(); - client = new RestfulClient(webServer.getBase()); + client = webServerRule.getClient(); resource = client.getDomainServiceResource(); } - @Ignore("TODO - fix broken test resulting from introduction of actionresult repr") - @Test - public void invokeQueryOnly_noArg_usingClientFollow() throws Exception { - - // given - final JsonRepresentation givenAction = givenAction("simples", "list"); - final ObjectActionRepresentation actionRepr = givenAction.as(ObjectActionRepresentation.class); - - // when - final LinkRepresentation invokeLink = actionRepr.getInvoke(); - - // then - assertThat(invokeLink, is(not(nullValue()))); - final RestfulResponse<ListRepresentation> restfulResponse = client.followT(invokeLink); - final ListRepresentation listRepr = restfulResponse.getEntity(); - - assertThat(listRepr.getValue().size(), is(5)); - } @Ignore("TODO - fix broken test resulting from introduction of actionresult repr") @Test
