package zenproject.meditation.android.sketch.actions.share;
import android.app.Activity;
import android.content.Intent;
import com.google.android.gms.analytics.Tracker;
import com.juankysoriano.rainbow.core.drawing.RainbowDrawer;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
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.RobolectricLauncherGradleTestRunner;
import zenproject.meditation.android.ZenTestBase;
import zenproject.meditation.android.analytics.AnalyticsTracker;
import zenproject.meditation.android.sketch.ZenSketch;
import static org.fest.assertions.api.Assertions.assertThat;
import static org.mockito.Matchers.anyMapOf;
import static org.mockito.Mockito.verify;
@RunWith(RobolectricLauncherGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class SketchSharerTest extends ZenTestBase {
@Mock
private ZenSketch zenSketch;
@Mock
private RainbowDrawer rainbowDrawer;
@Mock
private Tracker tracker;
@Mock
private Activity activity;
@Captor
private ArgumentCaptor<Intent> intentCaptor;
private SketchSharer sketchSharer;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
AnalyticsTracker.INSTANCE.inject(tracker);
ContextRetriever.INSTANCE.inject(activity);
sketchSharer = new SketchSharer(rainbowDrawer);
}
@Test
public void testShareSketchTracksAnalytics() {
sketchSharer.shareSketch();
verify(tracker).send(anyMapOf(String.class, String.class));
}
@Test
public void testThatShareSketchStartsActivityWithActionChooser() {
sketchSharer.shareSketch();
verify(activity).startActivity(intentCaptor.capture());
assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_CHOOSER);
}
@Test
public void testThatNewInstanceReturnsNotNullSketchSharer() {
assertThat(SketchSharer.newInstance()).isNotNull();
}
@Test
public void testThatNewInstanceReturnsANewInstance() {
SketchSharer secondInstance = SketchSharer.newInstance();
SketchSharer firstInstance = SketchSharer.newInstance();
assertThat(firstInstance).isNotEqualTo(secondInstance);
}
}