package com.facebook.model; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.SmallTest; import org.json.JSONException; import org.json.JSONObject; import java.util.Arrays; import java.util.Date; public final class OpenGraphObjectTests extends AndroidTestCase { private static String OBJECT_JSON = "{" + " \"id\": \"509\"," + " \"url\": \"http://www.example.com/100\"," + " \"type\": \"awesome:thing\"," + " \"title\": \"awesome title\"," + " \"data\": {" + " \"color\": \"blue\"" + " }," + " \"image\": [" + " {" + " \"url\": \"http://www.example.com/images/81\"" + " }" + " ]," + " \"video\": [" + " {" + " \"url\": \"http://www.example.com/videos/18\"" + " }" + " ]," + " \"audio\": [" + " {" + " \"url\": \"http://www.example.com/audio/98\"" + " }" + " ]," + " \"description\": \"a description\"," + " \"see_also\": [" + " \"http://www.example.com/101\"" + " ]," + " \"site_name\": \"Awesome Site\"," + " \"updated_time\": \"2013-04-30T18:18:17+0000\"," + " \"created_time\": \"2013-04-30T18:18:17+0000\"," + " \"application\": {" + " \"id\": \"55\"," + " \"name\": \"Awesome App\"," + " \"url\": \"https://www.facebook.com/apps/application.php?id=55\"" + " }," + " \"is_scraped\": false," + " \"post_action_id\": \"1234\"" + "}"; interface TestOpenGraphObjectData extends GraphObject { String getColor(); } interface TestOpenGraphObject extends GraphObject { TestOpenGraphObjectData getData(); } public OpenGraphObject getParsedObject() throws JSONException { JSONObject jsonObject = new JSONObject(OBJECT_JSON); return GraphObject.Factory.create(jsonObject, OpenGraphObject.class); } @SmallTest @MediumTest @LargeTest public void testParsedId() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("509", parsedObject.getId()); } @SmallTest @MediumTest @LargeTest public void testParsedType() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("awesome:thing", parsedObject.getType()); } @SmallTest @MediumTest @LargeTest public void testParsedUrl() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("http://www.example.com/100", parsedObject.getUrl()); } @SmallTest @MediumTest @LargeTest public void testParsedTitle() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("awesome title", parsedObject.getTitle()); } @SmallTest @MediumTest @LargeTest public void testParsedDescription() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("a description", parsedObject.getDescription()); } @SmallTest @MediumTest @LargeTest public void testParsedImage() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); GraphObjectList<GraphObject> images = parsedObject.getImage(); assertEquals("http://www.example.com/images/81", images.get(0).getProperty("url")); } @SmallTest @MediumTest @LargeTest public void testParsedVideo() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); GraphObjectList<GraphObject> videos = parsedObject.getVideo(); assertEquals("http://www.example.com/videos/18", videos.get(0).getProperty("url")); } @SmallTest @MediumTest @LargeTest public void testParsedAudio() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); GraphObjectList<GraphObject> audios = parsedObject.getAudio(); assertEquals("http://www.example.com/audio/98", audios.get(0).getProperty("url")); } @SmallTest @MediumTest @LargeTest public void testParsedSeeAlso() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("http://www.example.com/101", parsedObject.getSeeAlso().get(0)); } @SmallTest @MediumTest @LargeTest public void testParsedSiteName() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("Awesome Site", parsedObject.getSiteName()); } @SmallTest @MediumTest @LargeTest public void testParsedTimes() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals(new Date(1367345897000L), parsedObject.getCreatedTime()); assertEquals(new Date(1367345897000L), parsedObject.getUpdatedTime()); } @SmallTest @MediumTest @LargeTest public void testParsedApplication() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); GraphObject application = parsedObject.getApplication(); assertEquals("Awesome App", application.getProperty("name")); } @SmallTest @MediumTest @LargeTest public void testParsedIsScraped() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals(false, parsedObject.getIsScraped()); } @SmallTest @MediumTest @LargeTest public void testParsedPostActionId() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); assertEquals("1234", parsedObject.getPostActionId()); } @SmallTest @MediumTest @LargeTest public void testParsedData() throws JSONException { OpenGraphObject parsedObject = getParsedObject(); GraphObject data = parsedObject.getData(); assertEquals("blue", data.getProperty("color")); } @SmallTest @MediumTest @LargeTest public void testParsedDataWithTypedObject() throws JSONException { TestOpenGraphObject parsedObject = getParsedObject().cast(TestOpenGraphObject.class); TestOpenGraphObjectData data = parsedObject.getData(); assertEquals("blue", data.getColor()); } @SmallTest @MediumTest @LargeTest public void testSetImagesByUrl() throws JSONException { OpenGraphObject object = GraphObject.Factory.create(OpenGraphObject.class); object.setImageUrls(Arrays.asList("http://www.example.com/1", "http://www.example.com/2")); GraphObjectList<GraphObject> images = object.getImage(); assertNotNull(images); assertEquals(2, images.size()); assertEquals("http://www.example.com/1", images.get(0).getProperty("url")); assertEquals("http://www.example.com/2", images.get(1).getProperty("url")); } }