package zenproject.meditation.android.sketch.actions.clear;
import com.google.android.gms.analytics.Tracker;
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.RobolectricLauncherGradleTestRunner;
import zenproject.meditation.android.ZenTestBase;
import zenproject.meditation.android.analytics.AnalyticsTracker;
import zenproject.meditation.android.sketch.ZenSketch;
import zenproject.meditation.android.ui.sketch.ZenSketchView;
import static org.mockito.Matchers.anyMapOf;
import static org.mockito.Mockito.verify;
@RunWith(RobolectricLauncherGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class SketchClearerTest extends ZenTestBase {
@Mock
private ZenSketch zenSketch;
@Mock
private ZenSketchView zenSketchView;
@Mock
private Tracker tracker;
private SketchClearer sketchClearer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
AnalyticsTracker.INSTANCE.inject(tracker);
sketchClearer = new SketchClearer(zenSketch, zenSketchView);
}
@Test
public void testThatWhenClearSketchIsPerformedThenZenSketchIsCleared() {
sketchClearer.clearSketch();
verify(zenSketchView).clear();
}
@Test
public void testClearSketchTracksAnalytics() {
sketchClearer.clearSketch();
verify(tracker).send(anyMapOf(String.class, String.class));
}
@Test
public void testOnSketchClearedClearsZenSketch() {
sketchClearer.onSketchCleared();
verify(zenSketch).clear();
}
/**
* "Test everything that you could possibly break"
* - Kent Beck's
*/
@Test
public void testThatNewInstanceReturnsNotNullSketchClearer() {
Assertions.assertThat(SketchClearer.newInstance(zenSketchView)).isNotNull();
}
@Test
public void testThatNewInstanceReturnsANewInstance() {
SketchClearer firstInstance = SketchClearer.newInstance(zenSketchView);
SketchClearer secondInstance = SketchClearer.newInstance(zenSketchView);
Assertions.assertThat(firstInstance).isNotEqualTo(secondInstance);
}
}