package zenproject.meditation.android.sketch.actions.screenshot;
import com.google.android.gms.analytics.Tracker;
import com.juankysoriano.rainbow.core.drawing.RainbowDrawer;
import org.fest.assertions.api.Assertions;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import zenproject.meditation.android.BuildConfig;
import zenproject.meditation.android.ContextRetriever;
import zenproject.meditation.android.R;
import zenproject.meditation.android.RobolectricLauncherGradleTestRunner;
import zenproject.meditation.android.ZenTestBase;
import zenproject.meditation.android.analytics.AnalyticsTracker;
import zenproject.meditation.android.sketch.ZenSketch;
import static org.mockito.Matchers.anyMapOf;
import static org.mockito.Mockito.verify;
@RunWith(RobolectricLauncherGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class ScreenshotTakerTest extends ZenTestBase {
private static final String ZEN = ContextRetriever.INSTANCE.getResources().getString(R.string.app_name);
private static final String PICTURE_TITLE = ContextRetriever.INSTANCE.getResources().getString(R.string.picture_title);
@Mock
private ZenSketch zenSketch;
@Mock
private RainbowDrawer rainbowDrawer;
@Mock
private Tracker tracker;
private ScreenshotTaker screenshotTaker;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
AnalyticsTracker.INSTANCE.inject(tracker);
screenshotTaker = new ScreenshotTaker(rainbowDrawer);
}
@Test
public void testTakeScreenshotPerformsSaveOnRainbowDrawer() throws Exception {
screenshotTaker.takeScreenshot();
verify(rainbowDrawer).save(ZEN, PICTURE_TITLE);
}
@Test
public void testTakeScreenshotTracksAnalytics() {
screenshotTaker.takeScreenshot();
verify(tracker).send(anyMapOf(String.class, String.class));
}
@Test
public void testThatNewInstanceReturnsNotNullSketchClearer() {
Assertions.assertThat(ScreenshotTaker.newInstance()).isNotNull();
}
@Test
public void testThatNewInstanceReturnsANewInstance() {
ScreenshotTaker secondInstance = ScreenshotTaker.newInstance();
ScreenshotTaker firstInstance = ScreenshotTaker.newInstance();
Assertions.assertThat(firstInstance).isNotEqualTo(secondInstance);
}
}