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

Reply via email to