package zenproject.meditation.android;
import android.app.Activity;
import android.app.Application;
import org.fest.assertions.api.Assertions;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import static org.mockito.Mockito.verify;
@RunWith(RobolectricLauncherGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class ContextRetrieverTest extends ZenTestBase {
@Mock
private Application application;
@Mock
private Activity activity;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testThatWhenAnApplicationContextIsInjectedThenApplicationContextIsRetrieved() {
ContextRetriever.INSTANCE.inject(application);
ContextRetriever.INSTANCE.getApplicationContext();
verify(application).getApplicationContext();
}
@Test
public void testThatWhenAnActivityIsInjectedThenTheSameActivityIsRetrieved() {
ContextRetriever.INSTANCE.inject(activity);
Assertions.assertThat(ContextRetriever.INSTANCE.getActivity()).isEqualTo(activity);
}
@Test
public void testThatGetResourcesRetrievesFromApplicationContext() {
ContextRetriever.INSTANCE.inject(application);
ContextRetriever.INSTANCE.getResources();
verify(application).getResources();
}
@After
public void tearDown() {
ContextRetriever.INSTANCE.inject(RuntimeEnvironment.application);
}
}