package com.nilhcem.bblfr.ui;
import android.os.Build;
import com.nilhcem.bblfr.BuildConfig;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import rx.Subscription;
import static org.mockito.Mockito.times;
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 BaseActivityTest {
private TestBaseActivity activity;
@Spy TestSubscription subscription;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
activity = Robolectric.setupActivity(TestBaseActivity.class);
}
@Test
public void should_not_unsubscribe_if_subscription_is_unsubscribed() {
// Given
when(subscription.isUnsubscribed()).thenReturn(true);
activity.mSubscription = subscription;
// When
activity.onStop();
// Then
verify(subscription, times(0)).unsubscribe();
}
@Test
public void should_unsubscribe_if_subscription_is_subscribed() {
// Given
when(subscription.isUnsubscribed()).thenReturn(false);
activity.mSubscription = subscription;
// When
activity.onStop();
// Then
verify(subscription, times(1)).unsubscribe();
}
public static class TestBaseActivity extends BaseActivity {
}
public static class TestSubscription implements Subscription {
@Override
public void unsubscribe() {
}
@Override
public boolean isUnsubscribed() {
return false;
}
}
}