package edu.washington.geopost.ui.test; import java.util.List; import org.junit.Before; import org.junit.Test; import android.app.Activity; import android.app.ActivityManager; import android.app.Instrumentation.ActivityMonitor; import android.content.ComponentName; import android.content.Context; import android.test.ActivityInstrumentationTestCase2; import com.parse.ParseUser; import com.robotium.solo.Solo; import edu.washington.geopost.LoginActivity; import edu.washington.geopost.MainActivity; public class LogInUiTest extends ActivityInstrumentationTestCase2<LoginActivity> { long SHORT_TIMEOUT = 5000; private Solo solo; private ActivityMonitor facebook_am; private ActivityMonitor mainActivity_am; private ActivityManager am; public LogInUiTest() { super(LoginActivity.class); } public LogInUiTest(Class<LoginActivity> activityClass) { super(activityClass); } @Before public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); facebook_am = getInstrumentation().addMonitor(com.facebook.LoginActivity.class.getName(), null, false); mainActivity_am = getInstrumentation().addMonitor(MainActivity.class.getName(), null, false); am = (ActivityManager) getInstrumentation().getContext().getSystemService(Context.ACTIVITY_SERVICE); } @Test public void testButtonLaunchesFacebookLogIn() { Activity fbLoginResult = null; Activity mainActivityLoginResult = null; if (ParseUser.getCurrentUser() == null) { solo.clickOnButton("Log In"); fbLoginResult = facebook_am.waitForActivityWithTimeout(SHORT_TIMEOUT); mainActivityLoginResult = mainActivity_am.waitForActivityWithTimeout(SHORT_TIMEOUT); assertTrue(fbLoginResult != null || mainActivityLoginResult != null); } else { List<ActivityManager.RunningTaskInfo> allTasks = am.getRunningTasks(1); String activityName = allTasks.get(0).topActivity.getClassName(); assertTrue(activityName.equals(MainActivity.class.getName())); } ParseUser.logOut(); } }