package net.hockeyapp.android.metrics; import android.app.Application; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.test.InstrumentationTestCase; import net.hockeyapp.android.util.DummyExecutor; import net.hockeyapp.android.utils.AsyncTaskUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.concurrent.Executor; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) public class MetricsManagerTests extends InstrumentationTestCase { @Before public void setUp() throws Exception { super.setUp(); injectInstrumentation(InstrumentationRegistry.getInstrumentation()); } @After public void tearDown() throws Exception { super.tearDown(); } @Test public void initializationWorks() { PublicTelemetryContext mockTelemetryContext = mock(PublicTelemetryContext.class); PublicChannel mockChannel = mock(PublicChannel.class); PublicSender mockSender = mock(PublicSender.class); PublicPersistence mockPersistence = mock(PublicPersistence.class); MetricsManager sut = new MetricsManager(getInstrumentation().getContext(), mockTelemetryContext, mockSender, mockPersistence, mockChannel); verify(mockSender).setPersistence(mockPersistence); verify(mockPersistence).setSender(mockSender); assertNotNull(sut); assertNotNull(sut.getSender()); assertNotNull(sut.getChannel()); } @Test public void registerWorks() { Persistence mockPersistence = mock(PublicPersistence.class); Channel mockChannel = mock(PublicChannel.class); Sender mockSender = mock(PublicSender.class); Application mockApplication = mock(Application.class); when(mockApplication.getApplicationContext()).thenReturn(getInstrumentation().getContext()); MetricsManager.register(mockApplication, "12345678901234567890123456789032", mockSender, mockPersistence, mockChannel); assertNotNull(MetricsManager.getSender()); assertNotNull(MetricsManager.getChannel()); } @Test public void disableUserMetricsWorks() { Executor dummyExecutor = mock(DummyExecutor.class); AsyncTaskUtils.setCustomExecutor(dummyExecutor); MetricsManager.disableUserMetrics(); assertFalse(MetricsManager.isUserMetricsEnabled()); assertFalse(MetricsManager.sessionTrackingEnabled()); verifyNoMoreInteractions(dummyExecutor); MetricsManager.trackEvent("Test event"); AsyncTaskUtils.setCustomExecutor(null); } }