@Test public void testSetNewSession() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); TrackMe trackMe = new TrackMe(); tracker.track(trackMe); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); tracker.startNewSession(); TrackHelper.track().screen("").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); }
@Test public void testSetNewSession() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); TrackMe trackMe = new TrackMe(); tracker.track(trackMe); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); tracker.startNewSession(); TrackHelper.track().screen("").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); }
@Test public void testGetResolution() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); TrackMe trackMe = new TrackMe(); tracker.track(trackMe); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("480x800", mCaptor.getValue().get(QueryParams.SCREEN_RESOLUTION)); }
@Test public void testApplicationDomain() { when(mTrackerBuilder.getApplicationBaseUrl()).thenReturn("http://my-domain.com"); Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().screen("test/test").title("Test title").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); validateDefaultQuery(mCaptor.getValue()); assertTrue(mCaptor.getValue().get(QueryParams.URL_PATH).equals("http://my-domain.com/test/test")); }
@Test public void testGetResolution() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); TrackMe trackMe = new TrackMe(); tracker.track(trackMe); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("480x800", mCaptor.getValue().get(QueryParams.SCREEN_RESOLUTION)); }
@Test public void testApplicationDomain() { when(mTrackerBuilder.getApplicationBaseUrl()).thenReturn("http://my-domain.com"); Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().screen("test/test").title("Test title").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); validateDefaultQuery(mCaptor.getValue()); assertTrue(mCaptor.getValue().get(QueryParams.URL_PATH).equals("http://my-domain.com/test/test")); }
@Override public void run() { try { for (int j = 0; j < queryCount; j++) { TestHelper.sleep(new Random().nextInt(20 - 0) + 0); TrackMe trackMe = new TrackMe() .set(QueryParams.EVENT_ACTION, UUID.randomUUID().toString()) .set(QueryParams.EVENT_CATEGORY, UUID.randomUUID().toString()) .set(QueryParams.EVENT_NAME, UUID.randomUUID().toString()) .set(QueryParams.EVENT_VALUE, j); dispatcher.submit(trackMe); createdQueries.add(apiUrl + new Event(trackMe.toMap()).getEncodedQuery()); } } catch (Exception e) { e.printStackTrace(); assertFalse(true); } } }).start();
@Override public void run() { try { for (int j = 0; j < queryCount; j++) { TestHelper.sleep(new Random().nextInt(20 - 0) + 0); TrackMe trackMe = new TrackMe() .set(QueryParams.EVENT_ACTION, UUID.randomUUID().toString()) .set(QueryParams.EVENT_CATEGORY, UUID.randomUUID().toString()) .set(QueryParams.EVENT_NAME, UUID.randomUUID().toString()) .set(QueryParams.EVENT_VALUE, j); dispatcher.submit(trackMe); createdQueries.add(apiUrl + new Event(trackMe.toMap()).getEncodedQuery()); } } catch (Exception e) { e.printStackTrace(); assertFalse(true); } } }).start();
/** * https://github.com/matomo-org/matomo-sdk-android/issues/92 */ @Test public void testLastScreenUrl() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); tracker.track(new TrackMe()); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("http://this.is.our.package/", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe().set(QueryParams.URL_PATH, "http://some.thing.com/foo/bar")); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals("http://some.thing.com/foo/bar", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe().set(QueryParams.URL_PATH, "http://some.other/thing")); verify(mDispatcher, times(3)).submit(mCaptor.capture()); assertEquals("http://some.other/thing", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe()); verify(mDispatcher, times(4)).submit(mCaptor.capture()); assertEquals("http://some.other/thing", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe().set(QueryParams.URL_PATH, "thang")); verify(mDispatcher, times(5)).submit(mCaptor.capture()); assertEquals("http://this.is.our.package/thang", mCaptor.getValue().get(QueryParams.URL_PATH)); }
/** * https://github.com/matomo-org/matomo-sdk-android/issues/92 */ @Test public void testLastScreenUrl() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); tracker.track(new TrackMe()); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("http://this.is.our.package/", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe().set(QueryParams.URL_PATH, "http://some.thing.com/foo/bar")); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals("http://some.thing.com/foo/bar", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe().set(QueryParams.URL_PATH, "http://some.other/thing")); verify(mDispatcher, times(3)).submit(mCaptor.capture()); assertEquals("http://some.other/thing", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe()); verify(mDispatcher, times(4)).submit(mCaptor.capture()); assertEquals("http://some.other/thing", mCaptor.getValue().get(QueryParams.URL_PATH)); tracker.track(new TrackMe().set(QueryParams.URL_PATH, "thang")); verify(mDispatcher, times(5)).submit(mCaptor.capture()); assertEquals("http://this.is.our.package/thang", mCaptor.getValue().get(QueryParams.URL_PATH)); }
@Test public void testFirstVisitTimeStamp() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); TrackMe trackMe1 = mCaptor.getValue(); TestHelper.sleep(10); // make sure we are tracking in seconds assertTrue(Math.abs((System.currentTimeMillis() / 1000) - Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))) < 2); tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); TrackMe trackMe2 = mCaptor.getValue(); assertEquals(Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP)), Long.parseLong(trackMe2.get(FIRST_VISIT_TIMESTAMP))); assertEquals(tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1), Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))); }
@Test public void testFirstVisitTimeStamp() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); TrackMe trackMe1 = mCaptor.getValue(); TestHelper.sleep(10); // make sure we are tracking in seconds assertTrue(Math.abs((System.currentTimeMillis() / 1000) - Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))) < 2); tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); TrackMe trackMe2 = mCaptor.getValue(); assertEquals(Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP)), Long.parseLong(trackMe2.get(FIRST_VISIT_TIMESTAMP))); assertEquals(tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1), Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))); }
@Test public void testCheckSessionTimeout() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); tracker.setSessionTimeout(0); TrackHelper.track().screen("test").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); TestHelper.sleep(1); TrackHelper.track().screen("test").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); tracker.setSessionTimeout(60000); TrackHelper.track().screen("test").with(tracker); verify(mDispatcher, times(3)).submit(mCaptor.capture()); assertEquals(null, mCaptor.getValue().get(QueryParams.SESSION_START)); }
@Test public void testCheckSessionTimeout() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); tracker.setSessionTimeout(0); TrackHelper.track().screen("test").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); TestHelper.sleep(1); TrackHelper.track().screen("test").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals("1", mCaptor.getValue().get(QueryParams.SESSION_START)); tracker.setSessionTimeout(60000); TrackHelper.track().screen("test").with(tracker); verify(mDispatcher, times(3)).submit(mCaptor.capture()); assertEquals(null, mCaptor.getValue().get(QueryParams.SESSION_START)); }
@Test public void testTrackingCallbacks() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); Tracker.Callback callback1 = mock(Tracker.Callback.class); Tracker.Callback callback2 = mock(Tracker.Callback.class); TrackMe orig = new TrackMe(); TrackMe replaced = new TrackMe(); when(callback1.onTrack(orig)).thenReturn(replaced); when(callback2.onTrack(replaced)).thenReturn(replaced); tracker.addTrackingCallback(callback1); tracker.addTrackingCallback(callback1); tracker.addTrackingCallback(callback2); tracker.track(orig); verify(callback1).onTrack(orig); verify(callback2).onTrack(replaced); verify(mDispatcher).submit(replaced); tracker.removeTrackingCallback(callback1); tracker.track(orig); verify(callback2).onTrack(orig); }
@Test public void testSetVistorId() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); String visitorId = "0123456789abcdef"; tracker.setVisitorId(visitorId); assertEquals(visitorId, tracker.getVisitorId()); TrackMe trackMe = new TrackMe(); tracker.track(trackMe); verify(mDispatcher).submit(mCaptor.capture()); assertEquals(visitorId, mCaptor.getValue().get(QueryParams.VISITOR_ID)); }
@Test public void testSetVistorId() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); String visitorId = "0123456789abcdef"; tracker.setVisitorId(visitorId); assertEquals(visitorId, tracker.getVisitorId()); TrackMe trackMe = new TrackMe(); tracker.track(trackMe); verify(mDispatcher).submit(mCaptor.capture()); assertEquals(visitorId, mCaptor.getValue().get(QueryParams.VISITOR_ID)); }
@Test public void testTrackingCallbacks() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); Tracker.Callback callback1 = mock(Tracker.Callback.class); Tracker.Callback callback2 = mock(Tracker.Callback.class); TrackMe orig = new TrackMe(); TrackMe replaced = new TrackMe(); when(callback1.onTrack(orig)).thenReturn(replaced); when(callback2.onTrack(replaced)).thenReturn(replaced); tracker.addTrackingCallback(callback1); tracker.addTrackingCallback(callback1); tracker.addTrackingCallback(callback2); tracker.track(orig); verify(callback1).onTrack(orig); verify(callback2).onTrack(replaced); verify(mDispatcher).submit(replaced); tracker.removeTrackingCallback(callback1); tracker.track(orig); verify(callback2).onTrack(orig); }
@Test public void testTotalVisitCount() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getInt(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); assertEquals(1, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals(2, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); assertEquals(2, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); }
@Test public void testTotalVisitCount() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getInt(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); assertEquals(1, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals(2, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); assertEquals(2, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); }