@Test public void testInitializeLastEventId() throws JSONException { DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putLong(Constants.PREFKEY_LAST_EVENT_ID, 3L).commit(); amplitude.initialize(context, apiKey); Shadows.shadowOf(amplitude.logThread.getLooper()).runOneTask(); assertEquals(amplitude.lastEventId, 3L); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_ID_KEY), 3L); amplitude.logEvent("testEvent"); Shadows.shadowOf(amplitude.logThread.getLooper()).runToEndOfTasks(); Shadows.shadowOf(amplitude.logThread.getLooper()).runToEndOfTasks(); RecordedRequest request = runRequest(amplitude); JSONArray events = getEventsFromRequest(request); assertEquals(events.getJSONObject(0).getLong("event_id"), 1L); assertEquals(amplitude.lastEventId, 1L); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_ID_KEY), 1L); // verify shared prefs deleted assertEquals(prefs.getLong(Constants.PREFKEY_LAST_EVENT_ID, -1), -1); }
@Test public void testInitializeOptOut() { ShadowLooper looper = Shadows.shadowOf(amplitude.logThread.getLooper()); String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putBoolean(Constants.PREFKEY_OPT_OUT, true).commit(); DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); assertNull(dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY)); amplitude.initialize(context, apiKey); looper.runOneTask(); assertTrue(amplitude.isOptedOut()); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY), 1L); amplitude.setOptOut(false); looper.runOneTask(); assertFalse(amplitude.isOptedOut()); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY), 0L); // verify shared prefs deleted assertFalse(prefs.getBoolean(Constants.PREFKEY_OPT_OUT, false)); }
@Test public void testInitializePreviousSessionId() { DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putLong(Constants.PREFKEY_PREVIOUS_SESSION_ID, 4000L).commit(); amplitude.initialize(context, apiKey); Shadows.shadowOf(amplitude.logThread.getLooper()).runOneTask(); assertEquals(amplitude.sessionId, 4000L); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.PREVIOUS_SESSION_ID_KEY), 4000L); // verify shared prefs deleted assertEquals(prefs.getLong(Constants.PREFKEY_PREVIOUS_SESSION_ID, -1), -1); }
@Test public void testSkipSharedPrefsToDb() { DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); dbHelper.insertOrReplaceKeyValue(AmplitudeClient.DEVICE_ID_KEY, "testDeviceId"); dbHelper.insertOrReplaceKeyLongValue(AmplitudeClient.PREVIOUS_SESSION_ID_KEY, 1000L); dbHelper.insertOrReplaceKeyLongValue(AmplitudeClient.LAST_EVENT_TIME_KEY, 2000L); assertNull(dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_IDENTIFY_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY)); String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putString(Constants.PREFKEY_DEVICE_ID, "otherDeviceId").commit(); prefs.edit().putString(Constants.PREFKEY_USER_ID, "testUserId").commit(); prefs.edit().putBoolean(Constants.PREFKEY_OPT_OUT, true).commit(); prefs.edit().putLong(Constants.PREFKEY_LAST_IDENTIFY_ID, 3000L).commit(); amplitude.initialize(context, apiKey); ShadowLooper looper = Shadows.shadowOf(amplitude.logThread.getLooper()); looper.runOneTask(); looper.runToEndOfTasks(); assertEquals(dbHelper.getValue(AmplitudeClient.DEVICE_ID_KEY), "testDeviceId"); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.PREVIOUS_SESSION_ID_KEY), 1000L); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_TIME_KEY), 2000L); assertNull(dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_IDENTIFY_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY)); assertEquals(prefs.getString(Constants.PREFKEY_DEVICE_ID, null), "otherDeviceId"); assertEquals(prefs.getString(Constants.PREFKEY_USER_ID, null), "testUserId"); assertTrue(prefs.getBoolean(Constants.PREFKEY_OPT_OUT, false)); assertEquals(prefs.getLong(Constants.PREFKEY_LAST_IDENTIFY_ID, -1), 3000L); // after upgrade, pref values still there since they weren't deleted assertEquals(amplitude.deviceId, "testDeviceId"); assertEquals(amplitude.previousSessionId, 1000L); assertEquals(amplitude.lastEventTime, 2000L); assertNull(amplitude.userId); }
@Test public void testInitializeLastEventTime() { DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); dbHelper.insertOrReplaceKeyLongValue(AmplitudeClient.LAST_EVENT_TIME_KEY, 5000L); String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putLong(Constants.PREFKEY_LAST_EVENT_TIME, 4000L).commit(); amplitude.initialize(context, apiKey); Shadows.shadowOf(amplitude.logThread.getLooper()).runOneTask(); assertEquals(amplitude.lastEventTime, 5000L); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_TIME_KEY), 5000L); // verify shared prefs deleted assertEquals(prefs.getLong(Constants.PREFKEY_LAST_EVENT_TIME, -1), 4000L); }