/** Build user's info to display on the screen */ private String buildUserInfoDisplay(GraphUser user) { StringBuilder userInfo = new StringBuilder(""); /** (name) - no special permissions required */ userInfo.append(String.format("Name: %s\n", user.getName())); /** (birthday) - requires user_birthday permission */ userInfo.append(String.format("Birthday: %s\n", user.getBirthday())); /** (location) - requires user_location permission */ GraphPlace location = user.getLocation(); if (location != null) { userInfo.append(String.format("Location: %s\n", location.getProperty("name"))); } /** (locale) - no special permissions required */ userInfo.append(String.format("Locale: %s\n", user.getProperty("locale"))); /** (languages) - requires user_likes permission. */ JSONArray languages = (JSONArray) user.getProperty("languages"); if (languages != null && languages.length() > 0) { ArrayList<String> languageNames = new ArrayList<String>(); for (int i = 0; i < languages.length(); i++) { JSONObject language = languages.optJSONObject(i); languageNames.add(language.optString("name")); } userInfo.append(String.format("Languages: %s\n", languageNames.toString())); } return userInfo.toString(); }
@SmallTest @MediumTest @LargeTest public void testMapGetReturnsNullForMissingProperty() throws JSONException { GraphUser graphUser = GraphObject.Factory.create(GraphUser.class); assertNull(graphUser.getBirthday()); }
@SmallTest @MediumTest @LargeTest public void testCanCastBetweenGraphObjectTypes() { GraphObject graphObject = GraphObject.Factory.create(); graphObject.setProperty("first_name", "Mickey"); GraphUser graphUser = graphObject.cast(GraphUser.class); assertTrue(graphUser != null); // Should see the name we set earlier as a GraphObject. assertEquals("Mickey", graphUser.getFirstName()); // Changes to GraphUser should be reflected in GraphObject version. graphUser.setLastName("Mouse"); assertEquals("Mouse", graphObject.getProperty("last_name")); }
/** Update user's profile info */ private void updateUI() { if (mUser != null) { mUserInfo.setText(buildUserInfoDisplay(mUser)); mProfilePictureView.setProfileId(mUser.getId()); } else { mUserInfo.setText(null); mProfilePictureView.setProfileId(null); } }
@SmallTest @MediumTest @LargeTest public void testCanTreatAsGraphUser() { GraphUser graphUser = GraphObject.Factory.create(GraphUser.class); graphUser.setFirstName("Michael"); assertEquals("Michael", graphUser.getFirstName()); assertEquals("Michael", graphUser.getProperty("first_name")); assertEquals("Michael", graphUser.asMap().get("first_name")); graphUser.setProperty("last_name", "Scott"); assertEquals("Scott", graphUser.getProperty("last_name")); assertEquals("Scott", graphUser.getLastName()); assertEquals("Scott", graphUser.asMap().get("last_name")); }
@SmallTest @MediumTest @LargeTest public void testObjectWrapsIterable() throws JSONException { GraphUser user = GraphObject.Factory.create(GraphUser.class); user.setFirstName("Foo"); user.setLastName("Bar"); List<GraphUser> users = new ArrayList<GraphUser>(); users.add(user); OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); action.setTags(users); String json = action.getInnerJSONObject().toString(); assertTrue("JSON string should contain last_name", json.contains("last_name")); Object tags = action.getInnerJSONObject().get("tags"); assertNotNull("tags should not be null", tags); assertTrue("tags should be JSONArray", tags instanceof JSONArray); List<GraphObject> retrievedUsers = action.getTags(); assertEquals("Size should be 1", 1, retrievedUsers.size()); GraphUser retrievedUser = retrievedUsers.get(0).cast(GraphUser.class); assertEquals("First name should be Foo", "Foo", retrievedUser.getFirstName()); assertEquals("Last name should be Bar", "Bar", retrievedUser.getLastName()); }