Merge "Test that _modifier defaults to MODIFIER_MEDIA_SCAN after db upgrade" into sc-dev
diff --git a/tests/src/com/android/providers/media/DatabaseHelperTest.java b/tests/src/com/android/providers/media/DatabaseHelperTest.java
index a9c77b6..e0ae889 100644
--- a/tests/src/com/android/providers/media/DatabaseHelperTest.java
+++ b/tests/src/com/android/providers/media/DatabaseHelperTest.java
@@ -454,6 +454,42 @@
         }
     }
 
+    /**
+     * Test that existing database rows will default to _modifier=MODIFIER_MEDIA_SCAN
+     * after database upgrade.
+     */
+    @Test
+    public void testUpgradeAndAddModifier() throws Exception {
+        Class<? extends DatabaseHelper> beforeModifier = DatabaseHelperR.class;
+        Class<? extends DatabaseHelper> afterModifier = DatabaseHelperS.class;
+
+        try (DatabaseHelper helper = beforeModifier.getConstructor(Context.class, String.class)
+                .newInstance(sIsolatedContext, TEST_UPGRADE_DB)) {
+            SQLiteDatabase db = helper.getWritableDatabaseForTest();
+            {
+                // Insert a row before database upgrade.
+                final ContentValues values = new ContentValues();
+                values.put(FileColumns.DATA, "/storage/emulated/0/DCIM/test.jpg");
+                assertThat(db.insert("files", FileColumns.DATA, values)).isNotEqualTo(-1);
+            }
+        }
+
+        try (DatabaseHelper helper = afterModifier.getConstructor(Context.class, String.class)
+                .newInstance(sIsolatedContext, TEST_UPGRADE_DB)) {
+            SQLiteDatabase db = helper.getWritableDatabaseForTest();
+
+            try (Cursor cr = db.query("files", new String[]{FileColumns._MODIFIER}, null, null,
+                    null, null, null)) {
+                assertEquals(cr.getCount(), 1);
+                while (cr.moveToNext()) {
+                    // Verify that after db upgrade, for existing database rows, we set value of
+                    // _modifier=MODIFIER_MEDIA_SCAN
+                    assertThat(cr.getInt(0)).isEqualTo(FileColumns._MODIFIER_MEDIA_SCAN);
+                }
+            }
+        }
+    }
+
     private static String normalize(String sql) {
         return sql != null ? sql.replace(", ", ",") : null;
     }