package com.prasanna.android.stacknetwork; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowAlertDialog; import android.app.AlertDialog; import android.content.DialogInterface; import android.widget.Button; import android.widget.TextView; import com.prasanna.android.stacknetwork.utils.AppUtils; import com.prasanna.android.stacknetwork.utils.SharedPreferencesUtil; @RunWith(RobolectricTestRunner.class) public class LoginActivityTest extends AbstractBaseActivityTest { private LoginActivity loginActivity; @Before public void setup() { loginActivity = createActivity(LoginActivity.class); } @Test public void login() { assertTrue(AppUtils.isFirstRun(loginActivity)); Button loginButton = (Button) loginActivity.findViewById(R.id.login_button); assertNotNull(loginButton); loginButton.performClick(); assertNextActivity(loginActivity, OAuthActivity.class); assertFalse(AppUtils.isFirstRun(loginActivity)); } @Test public void loginScreenNotShowAfterFirstRun() { AppUtils.setFirstRunComplete(loginActivity); assertFalse(AppUtils.isFirstRun(loginActivity)); assertNextActivity(createActivity(LoginActivity.class), StackNetworkListActivity.class); } @Test public void loginScreenNotShowAfterFirstRunWithDefaulSiteSet() { AppUtils.setFirstRunComplete(loginActivity); AppUtils.setDefaultSite(loginActivity, getSite("Stack Overflow", "stackOverflow", false, false)); assertFalse(AppUtils.isFirstRun(loginActivity)); assertNextActivity(createActivity(LoginActivity.class), QuestionsActivity.class); } @Test public void skipLogin() { ((TextView) loginActivity.findViewById(R.id.skipLogin)).performClick(); AlertDialog latestAlertDialog = ShadowAlertDialog.getLatestAlertDialog(); ShadowAlertDialog dialog = Robolectric.shadowOf(latestAlertDialog); assertEquals(loginActivity.getString(R.string.noLoginWarn), dialog.getMessage()); assertTrue(latestAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick()); assertNextActivity(loginActivity, StackNetworkListActivity.class); } @Test public void skipLoginAndCancel() { ShadowActivity shadowActivity = Robolectric.shadowOf(loginActivity); ((TextView) loginActivity.findViewById(R.id.skipLogin)).performClick(); AlertDialog latestAlertDialog = ShadowAlertDialog.getLatestAlertDialog(); ShadowAlertDialog dialog = Robolectric.shadowOf(latestAlertDialog); assertEquals(loginActivity.getString(R.string.noLoginWarn), dialog.getMessage()); assertTrue(latestAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick()); assertNull(shadowActivity.getNextStartedActivity()); } @After public void cleanup() { SharedPreferencesUtil.clear(loginActivity); } }