diff options
author | Tony Mak <tonymak@google.com> | 2015-06-08 10:10:28 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-08 10:10:29 +0000 |
commit | 7d5a314146e64d45cd0981010f7b556897527d2e (patch) | |
tree | 49b12df944ce38ff6381ffd183de6c532b30da8b | |
parent | 452385e795333ef5b7560d89f2a54e681c93dc31 (diff) | |
parent | ea28dfc327c87b24855f7abd9a48ba9a1b3f43f5 (diff) | |
download | android_packages_providers_CalendarProvider-7d5a314146e64d45cd0981010f7b556897527d2e.tar.gz android_packages_providers_CalendarProvider-7d5a314146e64d45cd0981010f7b556897527d2e.tar.bz2 android_packages_providers_CalendarProvider-7d5a314146e64d45cd0981010f7b556897527d2e.zip |
Merge "Fix CalendarProvider2Test" into mnc-dev
-rw-r--r-- | src/com/android/providers/calendar/CalendarProvider2.java | 37 | ||||
-rw-r--r-- | tests/src/com/android/providers/calendar/CalendarProvider2Test.java | 112 |
2 files changed, 54 insertions, 95 deletions
diff --git a/src/com/android/providers/calendar/CalendarProvider2.java b/src/com/android/providers/calendar/CalendarProvider2.java index 5002177..73a2275 100644 --- a/src/com/android/providers/calendar/CalendarProvider2.java +++ b/src/com/android/providers/calendar/CalendarProvider2.java @@ -179,14 +179,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun private CalendarDatabaseHelper mDbHelper; private CalendarInstancesHelper mInstancesHelper; - // The extended property name for storing an Event original Timezone. - // Due to an issue in Calendar Server restricting the length of the name we - // had to strip it down - // TODO - Better name would be: - // "com.android.providers.calendar.CalendarSyncAdapter#originalTimezone" - protected static final String EXT_PROP_ORIGINAL_TIMEZONE = - "CalendarSyncAdapter#originalTimezone"; - private static final String SQL_SELECT_EVENTSRAWTIMES = "SELECT " + CalendarContract.EventsRawTimes.EVENT_ID + ", " + CalendarContract.EventsRawTimes.DTSTART_2445 + ", " + @@ -1088,7 +1080,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun long rangeEnd, String[] projection, String selection, String[] selectionArgs, String sort, boolean searchByDay, boolean forceExpansion, String instancesTimezone, boolean isHomeTimezone) { - mDb = mDbHelper.getWritableDatabase(); qb.setTables(INSTANCE_QUERY_TABLES); qb.setProjectionMap(sInstancesProjectionMap); @@ -1116,8 +1107,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun if (selectionArgs == null) { selectionArgs = newSelectionArgs; } else { - // The appendWhere pieces get added first, so put the - // newSelectionArgs first. selectionArgs = combine(newSelectionArgs, selectionArgs); } return qb.query(mDb, projection, selection, selectionArgs, null /* groupBy */, @@ -1237,15 +1226,12 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun } @VisibleForTesting - String[] constructSearchArgs(String[] tokens, long rangeBegin, long rangeEnd) { + String[] constructSearchArgs(String[] tokens) { int numCols = SEARCH_COLUMNS.length; - int numArgs = tokens.length * numCols + 2; - // the additional two elements here are for begin/end time + int numArgs = tokens.length * numCols; String[] selectionArgs = new String[numArgs]; - selectionArgs[0] = String.valueOf(rangeEnd); - selectionArgs[1] = String.valueOf(rangeBegin); for (int j = 0; j < tokens.length; j++) { - int start = 2 + numCols * j; + int start = numCols * j; for (int i = start; i < start + numCols; i++) { selectionArgs[i] = "%" + tokens[j] + "%"; } @@ -1262,13 +1248,13 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun qb.setProjectionMap(sInstancesProjectionMap); String[] tokens = tokenizeSearchQuery(query); - String[] newSelectionArgs = constructSearchArgs(tokens, rangeBegin, rangeEnd); + String[] searchArgs = constructSearchArgs(tokens); + String[] timeRange = new String[] {String.valueOf(rangeEnd), String.valueOf(rangeBegin)}; if (selectionArgs == null) { - selectionArgs = newSelectionArgs; + selectionArgs = combine(timeRange, searchArgs); } else { - // The appendWhere pieces get added first, so put the - // newSelectionArgs first. - selectionArgs = combine(newSelectionArgs, selectionArgs); + // where clause comes first, so put selectionArgs before searchArgs. + selectionArgs = combine(timeRange, selectionArgs, searchArgs); } // we pass this in as a HAVING instead of a WHERE so the filtering // happens after the grouping @@ -1304,7 +1290,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun ); qb.appendWhere(SQL_WHERE_INSTANCES_BETWEEN); } - return qb.query(mDb, projection, selection, selectionArgs, Tables.INSTANCES + "." + Instances._ID /* groupBy */, searchWhere /* having */, sort); @@ -2189,8 +2174,8 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun } if (updatedValues.containsKey(Events.ORIGINAL_SYNC_ID) && !updatedValues.containsKey(Events.ORIGINAL_ID)) { - long originalId = getOriginalId(updatedValues - .getAsString(Events.ORIGINAL_SYNC_ID), + long originalId = getOriginalId(updatedValues.getAsString( + Events.ORIGINAL_SYNC_ID), updatedValues.getAsString(Events.CALENDAR_ID)); if (originalId != -1) { updatedValues.put(Events.ORIGINAL_ID, originalId); @@ -3343,13 +3328,13 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun // event that we just duplicated on the previous iteration. if (eventId != prevEventId) { mDbHelper.duplicateEvent(eventId); - prevEventId = eventId; } mDb.delete(table, SQL_WHERE_ID, new String[]{String.valueOf(id)}); if (eventId != prevEventId) { mDb.update(Tables.EVENTS, dirtyValues, SQL_WHERE_ID, new String[] { String.valueOf(eventId)} ); } + prevEventId = eventId; count++; } } finally { diff --git a/tests/src/com/android/providers/calendar/CalendarProvider2Test.java b/tests/src/com/android/providers/calendar/CalendarProvider2Test.java index 5f2ebf4..98c4b6a 100644 --- a/tests/src/com/android/providers/calendar/CalendarProvider2Test.java +++ b/tests/src/com/android/providers/calendar/CalendarProvider2Test.java @@ -23,6 +23,8 @@ import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ProviderInfo; import android.content.res.Resources; import android.database.Cursor; import android.database.MatrixCursor; @@ -146,6 +148,11 @@ public class CalendarProvider2Test extends AndroidTestCase { public boolean stopService(Intent service) { return false; } + + @Override + public PackageManager getPackageManager() { + return getContext().getPackageManager(); + } } /** @@ -945,10 +952,21 @@ public class CalendarProvider2Test extends AndroidTestCase { new MockContext2(), // The context that most methods are delegated to getContext(), // The context that file methods are delegated to filenamePrefix); - mContext = new IsolatedContext(mResolver, targetContextWrapper); + mContext = new IsolatedContext(mResolver, targetContextWrapper) { + @Override + public Object getSystemService(String name) { + // for accessing wakelock. + if (Context.POWER_SERVICE.equals(name)) { + return getContext().getSystemService(name); + } + return super.getSystemService(name); + } + }; mProvider = new CalendarProvider2ForTesting(); - mProvider.attachInfo(mContext, null); + ProviderInfo info = new ProviderInfo(); + info.authority = CalendarContract.AUTHORITY; + mProvider.attachInfoForTesting(mContext, info); mResolver.addProvider(CalendarContract.AUTHORITY, mProvider); mResolver.addProvider("subscribedfeeds", new MockProvider("subscribedfeeds")); @@ -1339,7 +1357,7 @@ public class CalendarProvider2Test extends AndroidTestCase { .appendQueryParameter(Calendars.ACCOUNT_NAME, account) .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build(); } - + public void testInsertUpdateDeleteColor() throws Exception { // Calendar Color long colorType = Colors.TYPE_CALENDAR; @@ -1735,26 +1753,20 @@ public class CalendarProvider2Test extends AndroidTestCase { @SmallTest @Smoke public void testConstructSearchArgs() { - long rangeBegin = 0; - long rangeEnd = 10; - String[] tokens = new String[] {"red"}; - String[] expected = new String[] {"10", "0", "%red%", "%red%", + String[] expected = new String[] {"%red%", "%red%", "%red%", "%red%", "%red%" }; - assertArrayEquals(expected, mProvider.constructSearchArgs(tokens, - rangeBegin, rangeEnd)); + assertArrayEquals(expected, mProvider.constructSearchArgs(tokens)); tokens = new String[] {"red", "blue"}; - expected = new String[] { "10", "0", "%red%", "%red%", "%red%", + expected = new String[] { "%red%", "%red%", "%red%", "%red%", "%red%", "%blue%", "%blue%", "%blue%", "%blue%","%blue%"}; - assertArrayEquals(expected, mProvider.constructSearchArgs(tokens, - rangeBegin, rangeEnd)); + assertArrayEquals(expected, mProvider.constructSearchArgs(tokens)); tokens = new String[] {}; - expected = new String[] {"10", "0" }; - assertArrayEquals(expected, mProvider.constructSearchArgs(tokens, - rangeBegin, rangeEnd)); + expected = new String[] {}; + assertArrayEquals(expected, mProvider.constructSearchArgs(tokens)); } public void testInstanceSearchQuery() throws Exception { @@ -1950,7 +1962,7 @@ public class CalendarProvider2Test extends AndroidTestCase { assertEquals(0, deletes); } - + public void testCalendarAlerts() throws Exception { // This projection is from AlertActivity; want to make sure it works. String[] projection = new String[] { @@ -1967,11 +1979,17 @@ public class CalendarProvider2Test extends AndroidTestCase { CalendarContract.CalendarAlerts.STATE, // 10 CalendarContract.CalendarAlerts.ALARM_TIME, // 11 }; - testInsertNormalEvents(); // To initialize - Uri alertUri = CalendarContract.CalendarAlerts.insert(mResolver, 1 /* eventId */, + mCalendarId = insertCal("CalendarTestAttendees", DEFAULT_TIMEZONE); + String calendarIdString = Integer.toString(mCalendarId); + checkEvents(0, mDb, calendarIdString); + Uri eventUri = insertEvent(mCalendarId, findEvent("normal0")); + checkEvents(1, mDb, calendarIdString); + long eventId = ContentUris.parseId(eventUri); + + Uri alertUri = CalendarContract.CalendarAlerts.insert(mResolver, eventId /* eventId */, 2 /* begin */, 3 /* end */, 4 /* alarmTime */, 5 /* minutes */); - CalendarContract.CalendarAlerts.insert(mResolver, 1 /* eventId */, + CalendarContract.CalendarAlerts.insert(mResolver, eventId /* eventId */, 2 /* begin */, 7 /* end */, 8 /* alarmTime */, 9 /* minutes */); // Regular query @@ -2279,7 +2297,7 @@ public class CalendarProvider2Test extends AndroidTestCase { DEFAULT_ACCOUNT, DEFAULT_ACCOUNT_TYPE), extended); testAndClearDirty(eventId, syncAdapter ? 0 : 1); testQueryCount(CalendarContract.ExtendedProperties.CONTENT_URI, - "event_id=" + eventId, 2); + "event_id=" + eventId, 1); } else { // Confirm that inserting as app fails. try { @@ -2324,7 +2342,7 @@ public class CalendarProvider2Test extends AndroidTestCase { null /* where */, null /* selectionArgs */)); testAndClearDirty(eventId, syncAdapter ? 0 : 1); testQueryCount(CalendarContract.ExtendedProperties.CONTENT_URI, - "event_id=" + eventId, 2); + "event_id=" + eventId, 1); } // Now test deletes @@ -2356,7 +2374,8 @@ public class CalendarProvider2Test extends AndroidTestCase { null /* where */, null /* selectionArgs */)); testAndClearDirty(eventId, syncAdapter ? 0 : 1); - testQueryCount(CalendarContract.ExtendedProperties.CONTENT_URI, "event_id=" + eventId, 1); + testQueryCount(CalendarContract.ExtendedProperties.CONTENT_URI, "event_id=" + eventId, + 0); } } @@ -2815,8 +2834,8 @@ public class CalendarProvider2Test extends AndroidTestCase { public static final Uri PROPERTIES_CONTENT_URI = Uri.parse("content://" + CalendarContract.AUTHORITY + "/properties"); - public static final int COLUMN_KEY_INDEX = 1; - public static final int COLUMN_VALUE_INDEX = 0; + public static final int COLUMN_KEY_INDEX = 0; + public static final int COLUMN_VALUE_INDEX = 1; public void testGetProviderProperties() throws CalendarCache.CacheException { CalendarDatabaseHelper helper = (CalendarDatabaseHelper) getProvider().getDatabaseHelper(); @@ -2928,51 +2947,6 @@ public class CalendarProvider2Test extends AndroidTestCase { assertEquals(1, result); } - public void testInsertOriginalTimezoneInExtProperties() throws Exception { - int calId = insertCal("Calendar0", DEFAULT_TIMEZONE); - - - EventInfo[] events = { new EventInfo("normal0", - "2008-05-01T00:00:00", - "2008-05-02T00:00:00", - false, - DEFAULT_TIMEZONE) }; - - Uri eventUri = insertEvent(calId, events[0]); - assertNotNull(eventUri); - - long eventId = ContentUris.parseId(eventUri); - assertTrue(eventId > -1); - - // check the inserted event - checkEvent(1, events[0].mTitle, events[0].mDtstart, events[0].mDtend, events[0].mAllDay); - - // Should have 1 calendars and 1 event - testQueryCount(CalendarContract.Calendars.CONTENT_URI, null /* where */, 1); - testQueryCount(CalendarContract.Events.CONTENT_URI, null /* where */, 1); - - // Verify that the original timezone is correct - Cursor cursor = mResolver.query(CalendarContract.ExtendedProperties.CONTENT_URI, - null/* projection */, - "event_id=" + eventId, - null /* selectionArgs */, - null /* sortOrder */); - try { - // Should have 1 extended property for the original timezone - assertEquals(1, cursor.getCount()); - - if (cursor.moveToFirst()) { - long id = cursor.getLong(1); - assertEquals(id, eventId); - - assertEquals(CalendarProvider2.EXT_PROP_ORIGINAL_TIMEZONE, cursor.getString(2)); - assertEquals(DEFAULT_TIMEZONE, cursor.getString(3)); - } - } finally { - cursor.close(); - } - } - /** * Verifies that the number of defined calendars meets expectations. * |