Author: doll
Date: Thu Jun 12 11:30:38 2008
New Revision: 667191

URL: http://svn.apache.org/viewvc?rev=667191&view=rev
Log:
Added unit tests for the dataservice ActivityHandler and PersonHandler. Also 
added more tests to the PersonHandlerTest. 


Added:
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
Modified:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java?rev=667191&r1=667190&r2=667191&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
 Thu Jun 12 11:30:38 2008
@@ -24,15 +24,11 @@
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.inject.Inject;
-import com.google.inject.TypeLiteral;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
-import org.json.JSONObject;
-import org.json.JSONException;
-
 public class AppDataHandler extends DataRequestHandler {
   private AppDataService service;
 
@@ -113,7 +109,7 @@
 
     String jsonAppData = servletRequest.getParameter("entry");
     Map<String, String> values = Maps.newHashMap();
-    values = converter.convertToObject(jsonAppData.toString(),
+    values = converter.convertToObject(jsonAppData,
         (Class<Map<String, String>>) values.getClass());
 
     return service.updatePersonData(userId, groupId, fields, values,

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java?rev=667191&r1=667190&r2=667191&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
 Thu Jun 12 11:30:38 2008
@@ -44,6 +44,10 @@
       this.jsonString = jsonString;
     }
 
+    public String getJsonString() {
+      return jsonString;
+    }
+
     public static GroupId fromJson(String s) {
       return valueOf(s.substring(1).toUpperCase());
     }

Added: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java?rev=667191&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
 (added)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
 Thu Jun 12 11:30:38 2008
@@ -0,0 +1,134 @@
+/*
+ * 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.shindig.social.dataservice;
+
+import org.apache.shindig.social.ResponseItem;
+import org.apache.shindig.social.ResponseError;
+import org.apache.shindig.social.opensocial.model.Person;
+import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
+import org.apache.shindig.common.testing.FakeGadgetToken;
+
+import junit.framework.TestCase;
+import org.easymock.classextension.EasyMock;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class ActivityHandlerTest extends TestCase {
+  private BeanJsonConverter converter;
+  private HttpServletRequest servletRequest;
+  private ActivityService activityService;
+  private ActivityHandler handler;
+  private FakeGadgetToken token;
+
+
+  @Override
+  protected void setUp() throws Exception {
+    token = new FakeGadgetToken();
+    converter = EasyMock.createMock(BeanJsonConverter.class);
+    servletRequest = EasyMock.createMock(HttpServletRequest.class);
+    activityService = EasyMock.createMock(ActivityService.class);
+
+    handler = new ActivityHandler(activityService, converter);
+  }
+
+  private void replay() {
+    EasyMock.replay(converter);
+    EasyMock.replay(servletRequest);
+    EasyMock.replay(activityService);
+  }
+
+  private void verify() {
+    EasyMock.verify(converter);
+    EasyMock.verify(servletRequest);
+    EasyMock.verify(activityService);
+  }
+
+  private void setPath(String path) {
+    EasyMock.expect(servletRequest.getPathInfo()).andReturn(path);
+  }
+
+  private void assertHandleGetForGroup(DataServiceServlet.GroupId group) {
+    setPath("/activities/john.doe/" + group.getJsonString());
+
+    ResponseItem<RestfulCollection<Activity>> data
+        = new ResponseItem<RestfulCollection<Activity>>(null);
+    EasyMock.expect(activityService.getActivities("john.doe",
+        group, token)).andReturn(data);
+
+    replay();
+    assertEquals(data, handler.handleGet(servletRequest, token));
+    verify();
+  }
+
+  public void testHandleGetAll() throws Exception {
+    assertHandleGetForGroup(DataServiceServlet.GroupId.ALL);
+  }
+
+  public void testHandleGetFriends() throws Exception {
+    assertHandleGetForGroup(DataServiceServlet.GroupId.FRIENDS);
+  }
+
+  public void testHandleGetSelf() throws Exception {
+    assertHandleGetForGroup(DataServiceServlet.GroupId.SELF);
+  }
+
+  public void testHandleGetActivityById() throws Exception {
+    setPath("/people/john.doe/@friends/jane.doe");
+
+    ResponseItem<Activity> data = new ResponseItem<Activity>(null);
+    EasyMock.expect(activityService.getActivity("john.doe", 
DataServiceServlet.GroupId.FRIENDS,
+        "jane.doe", token)).andReturn(data);
+
+    replay();
+    assertEquals(data, handler.handleGet(servletRequest, token));
+    verify();
+  }
+
+  private ResponseItem setupPostData() {
+    setPath("/people/john.doe/@self");
+
+    String jsonActivity = "{title: hi mom!, etc etc}";
+    Activity activity = new Activity();
+    
EasyMock.expect(servletRequest.getParameter("entry")).andReturn(jsonActivity);
+    EasyMock.expect(converter.convertToObject(jsonActivity, 
Activity.class)).andReturn(activity);
+
+    ResponseItem data = new ResponseItem<Object>(null);
+    EasyMock.expect(activityService.createActivity("john.doe", activity, 
token)).andReturn(data);
+    replay();
+    return data;
+  }
+
+  public void testHandlePost() throws Exception {
+    ResponseItem data = setupPostData();
+    assertEquals(data, handler.handlePost(servletRequest, token));
+    verify();
+  }
+
+  public void testHandlePut() throws Exception {
+    ResponseItem data = setupPostData();
+    assertEquals(data, handler.handlePut(servletRequest, token));
+    verify();
+  }
+
+  public void testHandleDelete() throws Exception {
+    replay();
+    assertEquals(ResponseError.BAD_REQUEST, 
handler.handleDelete(servletRequest, token).getError());
+    verify();
+  }
+}
\ No newline at end of file

Added: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java?rev=667191&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
 (added)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
 Thu Jun 12 11:30:38 2008
@@ -0,0 +1,145 @@
+/*
+ * 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.shindig.social.dataservice;
+
+import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.social.ResponseItem;
+import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import junit.framework.TestCase;
+import org.easymock.classextension.EasyMock;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+public class AppDataHandlerTest extends TestCase {
+  private BeanJsonConverter converter;
+  private HttpServletRequest servletRequest;
+  private AppDataService appDataService;
+  private AppDataHandler handler;
+  private FakeGadgetToken token;
+
+
+  @Override
+  protected void setUp() throws Exception {
+    token = new FakeGadgetToken();
+    converter = EasyMock.createMock(BeanJsonConverter.class);
+    servletRequest = EasyMock.createMock(HttpServletRequest.class);
+    appDataService = EasyMock.createMock(AppDataService.class);
+
+    handler = new AppDataHandler(appDataService, converter);
+  }
+
+  private void replay() {
+    EasyMock.replay(converter);
+    EasyMock.replay(servletRequest);
+    EasyMock.replay(appDataService);
+  }
+
+  private void verify() {
+    EasyMock.verify(converter);
+    EasyMock.verify(servletRequest);
+    EasyMock.verify(appDataService);
+  }
+
+  private void setPath(String path) {
+    EasyMock.expect(servletRequest.getPathInfo()).andReturn(path);
+  }
+
+  private void assertHandleGetForGroup(DataServiceServlet.GroupId group) {
+    setPath("/activities/john.doe/" + group.getJsonString() + "/appId");
+    EasyMock.expect(servletRequest.getParameter("fields")).andReturn(null);
+
+    ResponseItem<DataCollection> data = new ResponseItem<DataCollection>(null);
+    EasyMock.expect(appDataService.getPersonData("john.doe", group,
+        Lists.<String>newArrayList(), "appId", token)).andReturn(data);
+
+    replay();
+    assertEquals(data, handler.handleGet(servletRequest, token));
+    verify();
+  }
+
+  public void testHandleGetAll() throws Exception {
+    assertHandleGetForGroup(DataServiceServlet.GroupId.ALL);
+  }
+
+  public void testHandleGetFriends() throws Exception {
+    assertHandleGetForGroup(DataServiceServlet.GroupId.FRIENDS);
+  }
+
+  public void testHandleGetSelf() throws Exception {
+    assertHandleGetForGroup(DataServiceServlet.GroupId.SELF);
+  }
+
+  public void testHandleGetWithoutFields() throws Exception {
+    setPath("/appData/john.doe/@friends/appId");
+    EasyMock.expect(servletRequest.getParameter("fields")).andReturn("pandas");
+
+    ResponseItem<DataCollection> data = new ResponseItem<DataCollection>(null);
+    EasyMock.expect(appDataService.getPersonData("john.doe", 
DataServiceServlet.GroupId.FRIENDS,
+        Lists.newArrayList("pandas"), "appId", token)).andReturn(data);
+
+    replay();
+    assertEquals(data, handler.handleGet(servletRequest, token));
+    verify();
+  }
+
+  private ResponseItem setupPostData() {
+    setPath("/appData/john.doe/@self/appId");
+    EasyMock.expect(servletRequest.getParameter("fields")).andReturn("pandas");
+
+    String jsonAppData = "{pandas: 'are fuzzy'}";
+    HashMap<String, String> values = Maps.newHashMap();
+    
EasyMock.expect(servletRequest.getParameter("entry")).andReturn(jsonAppData);
+    EasyMock.expect(converter.convertToObject(jsonAppData, 
HashMap.class)).andReturn(values);
+
+    ResponseItem data = new ResponseItem<Object>(null);
+    EasyMock.expect(appDataService.updatePersonData("john.doe", 
DataServiceServlet.GroupId.SELF,
+        Lists.newArrayList("pandas"), values, "appId", token)).andReturn(data);
+    replay();
+    return data;
+  }
+
+  public void testHandlePost() throws Exception {
+    ResponseItem data = setupPostData();
+    assertEquals(data, handler.handlePost(servletRequest, token));
+    verify();
+  }
+
+  public void testHandlePut() throws Exception {
+    ResponseItem data = setupPostData();
+    assertEquals(data, handler.handlePut(servletRequest, token));
+    verify();
+  }
+
+  public void testHandleDelete() throws Exception {
+    setPath("/appData/john.doe/@self/appId");
+    EasyMock.expect(servletRequest.getParameter("fields")).andReturn("pandas");
+
+    ResponseItem data = new ResponseItem<Object>(null);
+    EasyMock.expect(appDataService.deletePersonData("john.doe", 
DataServiceServlet.GroupId.SELF,
+        Lists.newArrayList("pandas"), "appId", token)).andReturn(data);
+
+    replay();
+    assertEquals(data, handler.handleDelete(servletRequest, token));
+    verify();
+  }
+}
\ No newline at end of file

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java?rev=667191&r1=667190&r2=667191&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java
 Thu Jun 12 11:30:38 2008
@@ -18,6 +18,7 @@
 package org.apache.shindig.social.dataservice;
 
 import org.apache.shindig.social.ResponseItem;
+import org.apache.shindig.social.ResponseError;
 import org.apache.shindig.social.opensocial.model.Person;
 import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
 import org.apache.shindig.common.testing.FakeGadgetToken;
@@ -33,9 +34,11 @@
   private HttpServletRequest servletRequest;
   private PersonService personService;
   private PersonHandler handler;
+  private FakeGadgetToken token;
 
   @Override
   protected void setUp() throws Exception {
+    token = new FakeGadgetToken();
     converter = EasyMock.createMock(BeanJsonConverter.class);
     servletRequest = EasyMock.createMock(HttpServletRequest.class);
     personService = EasyMock.createMock(PersonService.class);
@@ -55,8 +58,13 @@
     EasyMock.verify(personService);
   }
 
+  // TODO: Make super class and pull this up
+  private void setPath(String path) {
+    EasyMock.expect(servletRequest.getPathInfo()).andReturn(path);
+  }
+
   public void testHandleGetAllNoParams() throws Exception {
-    
EasyMock.expect(servletRequest.getPathInfo()).andReturn("/people/john.doe/@all");
+    setPath("/people/john.doe/@all");
 
     EasyMock.expect(servletRequest.getParameter("orderBy")).andReturn(null);
     EasyMock.expect(servletRequest.getParameter("filterBy")).andReturn(null);
@@ -64,7 +72,6 @@
     EasyMock.expect(servletRequest.getParameter("count")).andReturn(null);
     EasyMock.expect(servletRequest.getParameter("fields")).andReturn(null);
 
-    FakeGadgetToken token = new FakeGadgetToken();
     ResponseItem<RestfulCollection<Person>> data
         = new ResponseItem<RestfulCollection<Person>>(null);
     EasyMock.expect(personService.getPeople("john.doe",
@@ -81,7 +88,7 @@
   }
 
   public void testHandleGetFriendsNoParams() throws Exception {
-    
EasyMock.expect(servletRequest.getPathInfo()).andReturn("/people/john.doe/@friends");
+    setPath("/people/john.doe/@friends");
 
     EasyMock.expect(servletRequest.getParameter("orderBy")).andReturn(null);
     EasyMock.expect(servletRequest.getParameter("filterBy")).andReturn(null);
@@ -89,7 +96,6 @@
     EasyMock.expect(servletRequest.getParameter("count")).andReturn(null);
     EasyMock.expect(servletRequest.getParameter("fields")).andReturn(null);
 
-    FakeGadgetToken token = new FakeGadgetToken();
     ResponseItem<RestfulCollection<Person>> data
         = new ResponseItem<RestfulCollection<Person>>(null);
     EasyMock.expect(personService.getPeople("john.doe",
@@ -106,7 +112,7 @@
   }
 
   public void testHandleGetFriendsWithParams() throws Exception {
-    
EasyMock.expect(servletRequest.getPathInfo()).andReturn("/people/john.doe/@friends");
+    setPath("/people/john.doe/@friends");
 
     PersonService.SortOrder order = PersonService.SortOrder.name;
     PersonService.FilterType filter = PersonService.FilterType.topFriends;
@@ -117,7 +123,6 @@
     EasyMock.expect(servletRequest.getParameter("count")).andReturn("10");
     
EasyMock.expect(servletRequest.getParameter("fields")).andReturn("money,fame,fortune");
 
-    FakeGadgetToken token = new FakeGadgetToken();
     ResponseItem<RestfulCollection<Person>> data
         = new ResponseItem<RestfulCollection<Person>>(null);
     EasyMock.expect(personService.getPeople("john.doe", 
DataServiceServlet.GroupId.FRIENDS, order,
@@ -129,9 +134,8 @@
   }
 
   public void testHandleGetFriendById() throws Exception {
-    
EasyMock.expect(servletRequest.getPathInfo()).andReturn("/people/john.doe/@friends/jane.doe");
+    setPath("/people/john.doe/@friends/jane.doe");
 
-    FakeGadgetToken token = new FakeGadgetToken();
     ResponseItem<Person> data = new ResponseItem<Person>(null);
     // TODO: This isn't right! We should be passing both john.doe and jane.doe 
to the service
     // We probably need to either change the getPerson parameters or add a new 
method to
@@ -144,9 +148,8 @@
   }
 
   public void testHandleGetSelf() throws Exception {
-    
EasyMock.expect(servletRequest.getPathInfo()).andReturn("/people/john.doe/@self");
+    setPath("/people/john.doe/@self");
 
-    FakeGadgetToken token = new FakeGadgetToken();
     ResponseItem<Person> data = new ResponseItem<Person>(null);
     EasyMock.expect(personService.getPerson("john.doe", 
token)).andReturn(data);
 
@@ -154,4 +157,25 @@
     assertEquals(data, handler.handleGet(servletRequest, token));
     verify();
   }
+
+  public void testHandleDelete() throws Exception {
+    replay();
+    assertEquals(ResponseError.BAD_REQUEST,
+        handler.handleDelete(servletRequest, token).getError());
+    verify();
+  }
+
+  public void testHandlePut() throws Exception {
+    replay();
+    assertEquals(ResponseError.NOT_IMPLEMENTED,
+        handler.handlePut(servletRequest, token).getError());
+    verify();
+  }
+
+  public void testHandlePost() throws Exception {
+    replay();
+    assertEquals(ResponseError.NOT_IMPLEMENTED,
+        handler.handlePost(servletRequest, token).getError());
+    verify();
+  }
 }
\ No newline at end of file


Reply via email to