package com.pivotallabs; import android.content.Intent; import android.view.View; import android.widget.Button; import android.widget.ImageView; import com.pivotallabs.injected.InjectedActivity; import com.pivotallabs.tracker.RecentActivityActivity; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowIntent; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.robolectric.Robolectric.clickOn; import static org.robolectric.Robolectric.shadowOf; @RunWith(RobolectricTestRunner.class) public class HomeActivityTest { private HomeActivity activity; private Button pressMeButton; private Button trackerRecentActivityButton; private Button injectedActivityButton; private ImageView pivotalLogo; @Before public void setUp() throws Exception { activity = new HomeActivity(); activity.onCreate(null); pressMeButton = (Button) activity.findViewById(R.id.press_me_button); trackerRecentActivityButton = (Button) activity.findViewById(R.id.tracker_recent_activity); injectedActivityButton = (Button) activity.findViewById(R.id.injected_activity_button); pivotalLogo = (ImageView) activity.findViewById(R.id.pivotal_logo); } @Test public void shouldHaveAButtonThatSaysPressMe() throws Exception { assertThat((String) pressMeButton.getText(), equalTo("Tests Rock!")); } @Test public void pressingTheButtonShouldStartTheListActivity() throws Exception { pressMeButton.performClick(); ShadowActivity shadowActivity = shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); ShadowIntent shadowIntent = shadowOf(startedIntent); assertThat(shadowIntent.getComponent().getClassName(), equalTo(NamesActivity.class.getName())); } @Test public void pressingTheButtonShouldStartTheSignInActivity() throws Exception { trackerRecentActivityButton.performClick(); ShadowActivity shadowActivity = shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); ShadowIntent shadowIntent = shadowOf(startedIntent); assertThat(shadowIntent.getComponent().getClassName(), equalTo(RecentActivityActivity.class.getName())); } @Test public void shouldHaveALogo() throws Exception { assertThat(pivotalLogo.getVisibility(), equalTo(View.VISIBLE)); assertThat(shadowOf(pivotalLogo).getResourceId(), equalTo(R.drawable.pivotallabs_logo)); } @Test public void shouldLaunchInjectedActivity() throws Exception { clickOn(injectedActivityButton); ShadowActivity shadowActivity = shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertNotNull(startedIntent); ShadowIntent shadowIntent = shadowOf(startedIntent); assertThat(shadowIntent.getComponent().getClassName(), equalTo(InjectedActivity.class.getName())); } }