/*
* Copyright 2007 Yusuke Yamamoto
*
* Licensed 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 twitter4j;
import twitter4j.json.DataObjectFactory;
import java.util.List;
/**
* @author Yusuke Yamamoto - yusuke at mac.com
* @since Twitter4J 2.2.4
*/
public class ListResourcesTest extends TwitterTestBase {
public ListResourcesTest(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testListMethods() throws Exception {
ResponseList<UserList> userLists;
UserList userList;
userList = prepareListTest();
/*List Methods*/
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(userList);
assertEquals("testpoint1", userList.getName());
// assertEquals("@twit4j/testpoint1", userList.getFullName());
assertEquals("description1", userList.getDescription());
userLists = twitter1.getUserLists(id1.screenName);
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertFalse(userLists.size() == 0);
userList = twitter1.showUserList(userList.getId());
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertNotNull(userList);
userList = twitter1.showUserList(twitter1.getId(), userList.getSlug());
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertNotNull(userList);
List<Status> statuses = twitter1.getUserListStatuses(userList.getId(), new Paging());
if (statuses.size() > 0) {
assertEquals(statuses.get(0), DataObjectFactory.createStatus(DataObjectFactory.getRawJSON(statuses.get(0))));
}
statuses = twitter1.getUserListStatuses(userList.getId(), new Paging());
if (statuses.size() > 0) {
assertEquals(statuses.get(0), DataObjectFactory.createStatus(DataObjectFactory.getRawJSON(statuses.get(0))));
}
assertNotNull(DataObjectFactory.getRawJSON(statuses));
assertNull(DataObjectFactory.getRawJSON(userList));
assertNotNull(statuses);
userList = twitter1.updateUserList(userList.getId(), "testpoint2", true, "description2");
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
// workarounding issue 2166
// http://code.google.com/p/twitter-api/issues/detail?id=2166
userList = twitter1.showUserList(userList.getId());
assertTrue(userList.isPublic());
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertNotNull(userList);
assertEquals("testpoint2", userList.getName());
assertEquals("description2", userList.getDescription());
userList = twitter1.updateUserList(twitter1.getId(), userList.getSlug(), "testpoint3", true, "description3");
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertTrue(userList.isPublic());
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertNotNull(userList);
assertEquals("testpoint3", userList.getName());
assertEquals("description3", userList.getDescription());
}
public void testListMemberMethods() throws Exception {
PagableResponseList<UserList> userLists;
UserList userList;
userList = prepareListTest();
/*List Member Methods*/
User user = null;
try {
user = twitter1.showUserListMembership(userList.getId(), id2.id);
fail("id2 shouldn't be a member of the userList yet. expecting a TwitterException");
} catch (TwitterException te) {
assertEquals(404, te.getStatusCode());
}
userList = twitter1.createUserListMember(userList.getId(), id2.id);
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(DataObjectFactory.getRawJSON(userList));
userList = twitter1.createUserListMembers(userList.getId(), new long[]{id3.id});
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(DataObjectFactory.getRawJSON(userList));
userList = twitter1.createUserListMembers(userList.getId(), new String[]{"yusukey","yusuke"});
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertNotNull(userList);
PagableResponseList<User> users = twitter1.getUserListMembers(userList.getId(), -1);
assertEquals(users.get(0), DataObjectFactory.createUser(DataObjectFactory.getRawJSON(users.get(0))));
assertNotNull(DataObjectFactory.getRawJSON(users));
assertNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList.getMemberCount(), users.size());
users = twitter1.getUserListMembers(userList.getId(), -1);
assertEquals(users.get(0), DataObjectFactory.createUser(DataObjectFactory.getRawJSON(users.get(0))));
assertNotNull(DataObjectFactory.getRawJSON(users));
assertEquals(4, users.size());
userList = twitter1.destroyUserListMember(userList.getId(), id2.id);
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(userList);
// member_count don't get decreased by destroyUserListMember. need to retrieve user list again
userList = twitter1.showUserList(userList.getId());
assertEquals(3, userList.getMemberCount());
user = twitter1.showUserListMembership(userList.getId(), id3.id);
assertNotNull(DataObjectFactory.getRawJSON(user));
assertEquals(user, DataObjectFactory.createUser(DataObjectFactory.getRawJSON(user)));
assertEquals(id3.id, user.getId());
userLists = twitter1.getUserListMemberships(id1.screenName, -1l);
assertNotNull(DataObjectFactory.getRawJSON(userLists));
assertEquals(userLists.get(0), DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userLists.get(0))));
assertNotNull(userLists);
userLists = twitter1.getUserListSubscriptions(id1.screenName, -1l);
assertNotNull(DataObjectFactory.getRawJSON(userLists));
if (userLists.size() > 0) {
assertEquals(userLists.get(0), DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userLists.get(0))));
}
assertNotNull(userLists);
assertEquals(0, userLists.size());
}
public void testUsingOwnerScreenName() throws Exception {
UserList userList;
userList = prepareListTest();
String ownerScreenName = id1.screenName;
String slug = userList.getSlug();
User user;
try {
twitter1.showUserListMembership(ownerScreenName, slug, id2.id);
fail("id2 shouldn't be a member of the userList yet. expecting a TwitterException");
} catch (TwitterException te) {
assertEquals(404, te.getStatusCode());
}
userList = twitter1.createUserListMember(ownerScreenName, slug, id2.id);
assertNotNull(userList);
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
userList = twitter1.createUserListMembers(ownerScreenName, slug, new long[]{id3.id, id2.id});
assertNotNull(userList);
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
userList = twitter1.createUserListMembers(ownerScreenName, slug, new String[]{"akr", "yusukey"});
assertNotNull(userList);
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
PagableResponseList<User> users = twitter1.getUserListMembers(ownerScreenName, slug, -1);
assertNotNull(users);
assertNotNull(DataObjectFactory.getRawJSON(users));
assertTrue(users.size() > 0);
assertEquals(users.get(0), DataObjectFactory.createUser(DataObjectFactory.getRawJSON(users.get(0))));
userList = twitter1.updateUserList(ownerScreenName, slug, slug, true, "new-description");
assertTrue(userList.isPublic());
assertEquals("new-description", userList.getDescription());
assertEquals(0, userList.getSubscriberCount());
userList = twitter2.createUserListSubscription(ownerScreenName, slug);
assertNotNull(userList);
assertNotNull(DataObjectFactory.getRawJSON(userList));
List<Status> statuses = twitter2.getUserListStatuses(ownerScreenName, slug, new Paging());
assertNotNull(statuses);
assertNotNull(DataObjectFactory.getRawJSON(statuses));
if (statuses.size() > 0) {
assertEquals(statuses.get(0), DataObjectFactory.createStatus(DataObjectFactory.getRawJSON(statuses.get(0))));
}
user = twitter1.showUserListSubscription(ownerScreenName, slug, id2.id);
assertNotNull(user);
assertNotNull(DataObjectFactory.getRawJSON(user));
assertEquals(user, DataObjectFactory.createUser(DataObjectFactory.getRawJSON(user)));
assertEquals(id2.id, user.getId());
userList = twitter2.showUserList(ownerScreenName, slug);
assertNotNull(userList);
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertTrue(userList.isPublic());
assertEquals("testpoint1", userList.getName());
assertEquals("new-description", userList.getDescription());
assertEquals(1, userList.getSubscriberCount());
users = twitter1.getUserListSubscribers(ownerScreenName, slug, -1);
assertNotNull(users);
assertNotNull(DataObjectFactory.getRawJSON(users));
assertEquals(1, users.size());
userList = twitter2.destroyUserListSubscription(ownerScreenName, slug);
assertNotNull(userList);
userList = twitter1.showUserList(ownerScreenName, slug);
assertEquals(0, userList.getSubscriberCount());
userList = twitter1.destroyUserListMember(ownerScreenName, slug, id2.id);
assertNotNull(userList);
userList = twitter1.showUserList(ownerScreenName, slug);
assertEquals(3, userList.getMemberCount());
twitter1.destroyUserList(ownerScreenName, slug);
try {
twitter1.showUserList(ownerScreenName, slug);
fail(String.format("%s/%s was destroyed", ownerScreenName, slug));
} catch (TwitterException e) {
assertEquals(404, e.getStatusCode());
}
}
public void testListSubscribersMethods() throws Exception {
PagableResponseList<UserList> userLists;
UserList userList;
userList = prepareListTest();
/*List Subscribers Methods*/
PagableResponseList<User> users;
users = twitter1.getUserListSubscribers(twitter1.getId(), userList.getSlug(), -1);
assertNotNull(DataObjectFactory.getRawJSON(users));
assertEquals(0, users.size());
// try {
twitter2.createUserListSubscription(userList.getId());
// } catch (TwitterException te) {
// workarounding issue 1300
// http://code.google.com/p/twitter-api/issues/detail?id=1300
// assertEquals(404, te.getStatusCode());
// }
// expected subscribers: id2
try {
twitter3.createUserListSubscription(userList.getId());
} catch (TwitterException te) {
// workarounding issue 1300
assertEquals(404, te.getStatusCode());
}
// expected subscribers: id2 and id4
try {
twitter2.destroyUserListSubscription(userList.getId());
} catch (TwitterException te) {
// workarounding issue 1300
assertEquals(404, te.getStatusCode());
}
// expected subscribers: id4
users = twitter1.getUserListSubscribers(userList.getId(), -1);
// assertEquals(1, users.size()); //only id4 should be subscribing the userList
assertTrue(0 <= users.size()); // workarounding issue 1300
User user;
try {
user = twitter1.showUserListSubscription(userList.getId(), id3.id);
assertNotNull(DataObjectFactory.getRawJSON(user));
assertEquals(user, DataObjectFactory.createUser(DataObjectFactory.getRawJSON(user)));
assertEquals(id3.id, user.getId());
} catch (TwitterException te) {
// workarounding issue 1300
assertEquals(404, te.getStatusCode());
}
userLists = twitter1.getUserListSubscriptions(id3.screenName, -1l);
assertNotNull(userLists);
if (userLists.size() > 0) {
assertEquals(userLists.get(0), DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userLists.get(0))));
}
// assertEquals(1, userLists.size()); workarounding issue 1300
try {
user = twitter1.showUserListSubscription(userList.getId(), id2.id);
fail("id2 shouldn't be a subscriber the userList. expecting a TwitterException");
} catch (TwitterException ignore) {
assertEquals(404, ignore.getStatusCode());
}
userList = twitter1.destroyUserList(userList.getId());
assertNotNull(DataObjectFactory.getRawJSON(userList));
assertEquals(userList, DataObjectFactory.createUserList(DataObjectFactory.getRawJSON(userList)));
assertNotNull(userList);
}
// test case for TFJ-726
public void testPagingCountDosentWork1() throws TwitterException {
final int COUNT = 10;
Paging paging = new Paging();
paging.count(COUNT);
// twitterapi/team
ResponseList<Status> res =
twitter1
.getUserListStatuses(6253282L, "team", paging);
int actual = res.size();
assertTrue(
String.format(
"Twitter#getUserListStatuses(userId, slug, new Paging().count(%d)).size() must be equal or less than %d, but %d",
COUNT,
COUNT,
actual),
actual <= COUNT);
}
// test case for TFJ-726
public void testPagingCountDosentWork2() throws TwitterException {
final int COUNT = 10;
Paging paging = new Paging();
paging.count(COUNT);
// twitterapi/team
ResponseList<Status> res =
twitter1
.getUserListStatuses(2031945, paging);
int actual = res.size();
assertTrue(
String.format(
"Twitter#getUserListStatuses(userId, slug, new Paging().count(%d)).size() must be equal or less than %d, but %d",
COUNT,
COUNT,
actual),
actual <= COUNT);
}
private UserList prepareListTest() throws Exception {
ResponseList<UserList> userLists;
userLists = twitter1.getUserLists(id1.screenName);
assertNotNull(DataObjectFactory.getRawJSON(userLists));
for (UserList alist : userLists) {
twitter1.destroyUserList(twitter1.getId(), alist.getSlug());
}
return twitter1.createUserList("testpoint1", true, "description1");
}
}