/* * Android SDK for Piwik * * @link https://github.com/piwik/piwik-android-sdk * @license https://github.com/piwik/piwik-sdk-android/blob/master/LICENSE BSD-3 Clause */ package org.piwik.sdk; import android.annotation.SuppressLint; import android.app.Application; import org.junit.Test; import org.junit.runner.RunWith; import org.piwik.sdk.dispatcher.Packet; import org.piwik.sdk.extra.TrackHelper; import org.piwik.sdk.testhelper.FullEnvTestRunner; import org.piwik.sdk.testhelper.PiwikTestApplication; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; import java.util.ArrayList; import java.util.Collections; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @Config(emulateSdk = 18, manifest = Config.NONE) @RunWith(FullEnvTestRunner.class) public class PiwikTest { @Test public void testNewTracker() throws Exception { PiwikTestApplication app = (PiwikTestApplication) Robolectric.application; Tracker tracker = Piwik.getInstance(Robolectric.application).newTracker(app.onCreateTrackerConfig()); assertNotNull(tracker); assertEquals(app.onCreateTrackerConfig().getApiUrl(), tracker.getAPIUrl()); assertEquals(app.onCreateTrackerConfig().getSiteId(), tracker.getSiteId()); } @Test public void testNormalTracker() throws Exception { Piwik piwik = Piwik.getInstance(Robolectric.application); Tracker tracker = piwik.newTracker(new TrackerConfig("http://test", 1, "Default Tracker")); assertEquals("http://test/piwik.php", tracker.getAPIUrl().toString()); assertEquals(1, tracker.getSiteId()); } @Test public void testTrackerNaming() { // TODO can we somehow detect naming collisions on tracker creation? // Would probably requiring us to track created trackers } @SuppressLint("InlinedApi") @Test public void testLowMemoryDispatch() throws Exception { PiwikTestApplication app = (PiwikTestApplication) Robolectric.application; Tracker tracker = app.getTracker(); assertNotNull(tracker); tracker.setDryRunTarget(Collections.synchronizedList(new ArrayList<Packet>())); tracker.setDispatchInterval(-1); tracker.track(TrackHelper.track().screen("test").build()); tracker.dispatch(); Thread.sleep(50); assertFalse(tracker.getDryRunTarget().isEmpty()); tracker.getDryRunTarget().clear(); tracker.track(TrackHelper.track().screen("test").build()); Thread.sleep(50); assertTrue(tracker.getDryRunTarget().isEmpty()); app.onTrimMemory(Application.TRIM_MEMORY_UI_HIDDEN); Thread.sleep(50); assertFalse(tracker.getDryRunTarget().isEmpty()); } @Test public void testGetSettings() { Tracker tracker1 = mock(Tracker.class); when(tracker1.getName()).thenReturn("1"); Tracker tracker2 = mock(Tracker.class); when(tracker2.getName()).thenReturn("2"); Tracker tracker3 = mock(Tracker.class); when(tracker3.getName()).thenReturn("1"); final Piwik piwik = Piwik.getInstance(Robolectric.application); assertEquals(piwik.getTrackerPreferences(tracker1), piwik.getTrackerPreferences(tracker1)); assertNotEquals(piwik.getTrackerPreferences(tracker1), piwik.getTrackerPreferences(tracker2)); assertEquals(piwik.getTrackerPreferences(tracker1), piwik.getTrackerPreferences(tracker3)); } }