package net.rdrei.android.scdl2.test;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import net.rdrei.android.scdl2.R;
import net.rdrei.android.scdl2.ui.ApplicationPreferencesActivity;
import net.rdrei.android.scdl2.ui.CommonMenuFragment;
import org.junit.Test;
import org.junit.runner.RunWith;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.MenuItem;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.ShadowActivity;
import org.robolectric.shadows.ShadowIntent;
import org.robolectric.tester.android.view.TestMenuItem;
import org.robolectric.util.ActivityController;
@RunWith(RobolectricTestRunner.class)
public class PreferencesMenuTest {
private void shouldStartPreferencesInActivity(Fragment fragment) {
final ActivityController<FragmentActivity> controller = Robolectric.buildActivity(FragmentActivity.class);
controller.create().start().resume();
final FragmentActivity activity = controller.get();
activity.getSupportFragmentManager().beginTransaction()
.add(fragment, null)
.commit();
final MenuItem item = new TestMenuItem(R.id.preferences);
fragment.onOptionsItemSelected(item);
final ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
final Intent startedActivity = shadowActivity.getNextStartedActivity();
// Intent was actually started
assertThat(startedActivity, notNullValue());
final ShadowIntent intent = Robolectric.shadowOf(startedActivity);
assertThat(intent.getComponent().getClassName(),
equalTo(ApplicationPreferencesActivity.class.getName()));
}
@Test
public void testShouldStartPreferencesInCommonMenuFragment() {
final Fragment fragment = new CommonMenuFragment();
shouldStartPreferencesInActivity(fragment);
}
}