package com.nilhcem.bblfr.ui.navigationdrawer;
import android.content.Intent;
import android.os.Build;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import com.google.common.truth.Truth;
import com.nilhcem.bblfr.BuildConfig;
import com.nilhcem.bblfr.ui.baggers.list.BaggersListActivity;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowActivity;
import org.robolectric.shadows.ShadowIntent;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.M)
public class NavigationDrawerActivityTest {
private TestNavigationDrawerActivity activity;
@Mock DrawerLayout drawer;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
Intent intent = new Intent(RuntimeEnvironment.application, TestNavigationDrawerActivity.class);
intent.putExtra("mSelectedDrawerItem", NavigationDrawerEntry.ABOUT.name());
activity = Robolectric.buildActivity(TestNavigationDrawerActivity.class).withIntent(intent).create().get();
activity.mNavigationDrawer = new NavigationDrawerActivity.NavigationDrawerViewHolder();
activity.mNavigationDrawer.mLayout = drawer;
}
@Test
public void should_close_drawer_if_visible_on_back_pressed() {
// Given
when(drawer.isDrawerVisible(GravityCompat.START)).thenReturn(true);
// When
activity.onBackPressed();
// Then
verify(drawer).closeDrawer(GravityCompat.START);
}
@Test
public void should_start_baggers_list_activity_if_drawer_is_not_visible_on_back_pressed_and_current_activity_is_not_a_baggers_list_activity() {
// Given
when(drawer.isDrawerVisible(GravityCompat.START)).thenReturn(false);
// When
activity.onBackPressed();
// Then
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
Intent startedIntent = shadowActivity.getNextStartedActivity();
ShadowIntent shadowIntent = Shadows.shadowOf(startedIntent);
Truth.assertThat(shadowIntent.getIntentClass().getName()).isEqualTo(BaggersListActivity.class.getName());
}
public static class TestNavigationDrawerActivity extends NavigationDrawerActivity {
}
}