package com.socialize.test.profile;
import android.app.Activity;
import android.app.Instrumentation;
import android.content.Context;
import com.socialize.SocializeAccess;
import com.socialize.UserUtils;
import com.socialize.api.action.ShareType;
import com.socialize.api.action.activity.SocializeActionUtils;
import com.socialize.api.action.comment.SocializeCommentUtils;
import com.socialize.api.action.user.SocializeUserUtils;
import com.socialize.entity.*;
import com.socialize.error.SocializeException;
import com.socialize.listener.activity.ActionListListener;
import com.socialize.listener.comment.CommentGetListener;
import com.socialize.listener.user.UserGetListener;
import com.socialize.test.SocializeActivityTest;
import com.socialize.test.util.TestUtils;
import com.socialize.ui.action.ActionDetailActivity;
import com.socialize.ui.action.ActionDetailContentView;
import com.socialize.ui.action.ActionDetailLayoutView;
import com.socialize.ui.action.OnActionDetailViewListener;
import com.socialize.ui.profile.activity.UserActivityListItem;
import com.socialize.ui.profile.activity.UserActivityView;
import com.socialize.ui.view.LoadingItemView;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class ActionDetailTest extends SocializeActivityTest {
public void testActionDetailViewDisplaysCorrectInformation() throws InterruptedException {
String comment0 = "Test Comment0";
String comment1 = "Test Comment1";
String key = "foo";
String val = "bar";
final Comment action = new Comment();
Entity entity = Entity.newInstance(key, val);
action.setId(1L);
action.setText(comment0);
action.setEntity(entity);
List<SocializeAction> actions = new LinkedList<SocializeAction>();
final Comment comment = new Comment();
action.setId(2L);
action.setText(comment1);
action.setEntity(entity);
Share share = new Share();
share.setEntity(entity);
share.setId(3L);
share.setShareType(ShareType.FACEBOOK);
Like like = new Like();
like.setEntity(entity);
like.setId(4L);
actions.add(comment);
actions.add(share);
actions.add(like);
final ListResult<SocializeAction> result = new ListResult<SocializeAction>(actions);
final User user = new User();
user.setId(1L);
user.setFirstName("foobar name");
SocializeActionUtils actionUtilsProxy = new SocializeActionUtils() {
@Override
public void getActionsByUser(Activity context, long userId, int start, int end, ActionListListener listener) {
listener.onList(result);
}
};
SocializeCommentUtils commentUtilsProxy = new SocializeCommentUtils(){
@Override
public void getComment(Activity context, long id, CommentGetListener listener) {
listener.onGet(action);
}
};
SocializeUserUtils userUtilsProxy = new SocializeUserUtils() {
@Override
public void getUser(Context context, long id, UserGetListener listener) {
listener.onGet(user);
}
@Override
public void showUserProfileView(Activity context, User user, SocializeAction action, OnActionDetailViewListener onActionDetailViewListener) {
SocializeAccess.originalUserUtilsProxy.showUserProfileView(context, user, action, onActionDetailViewListener);
}
};
SocializeAccess.setActionUtilsProxy(actionUtilsProxy);
SocializeAccess.setUserUtilsProxy(userUtilsProxy);
SocializeAccess.setCommentUtilsProxy(commentUtilsProxy);
Instrumentation.ActivityMonitor monitor = TestUtils.setUpActivityMonitor(this, ActionDetailActivity.class);
final CountDownLatch latch = new CountDownLatch(1);
UserUtils.showUserProfileWithAction(TestUtils.getActivity(this), user, action, new OnActionDetailViewListener() {
@Override
public void onCreate(ActionDetailLayoutView view) {}
@Override
public void onRender(ActionDetailLayoutView view) {
addResult(0, view);
latch.countDown();
}
@Override
public void onError(SocializeException error) {
error.printStackTrace();
latch.countDown();
}
});
Activity actionDetailActivity = monitor.waitForActivityWithTimeout(10000);
try {
assertTrue(latch.await(20, TimeUnit.SECONDS));
ActionDetailLayoutView view = getResult(0);
SocializeAction currentAction = view.getCurrentAction();
ActionDetailContentView content = view.getContent();
assertNotNull(currentAction);
assertNotNull(content);
assertEquals(action.getId(), currentAction.getId());
UserActivityView userActivityView = content.getUserActivityView();
assertNotNull(userActivityView);
LoadingItemView<UserActivityListItem> itemView = userActivityView.getItemView();
assertNotNull(itemView);
List<UserActivityListItem> items = itemView.getItems();
assertNotNull(items);
assertEquals(3, items.size());
} finally {
actionDetailActivity.finish();
}
}
}