diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2018-10-29 14:02:20 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2019-01-03 10:25:44 -0800 |
commit | 161a214ede3c13adc1cb098d252a46f76f3f0ba4 (patch) | |
tree | 5a6df1508209553fa75150cbe268083a07212b20 /robolectric_tests/src/com/android/launcher3/model/GridBackupTableTest.java | |
parent | efb8b836660bd367744c406b1a3ce7f20561e000 (diff) | |
download | android_packages_apps_Trebuchet-161a214ede3c13adc1cb098d252a46f76f3f0ba4.tar.gz android_packages_apps_Trebuchet-161a214ede3c13adc1cb098d252a46f76f3f0ba4.tar.bz2 android_packages_apps_Trebuchet-161a214ede3c13adc1cb098d252a46f76f3f0ba4.zip |
Adding support for backing up favorites table
Favorites table is copied as a separate table name during the first grid migration.
On subsequent migrations this backup table is used if it exists, otherwise new
backup is created. The backup table is also removed if there is any insert or
delete operation on the db (outside of the migration operation itself).
Bug: 111850268
Bug: 121048571
Change-Id: I6f02f4a355c369ee99d89430971be258f7516f6e
Diffstat (limited to 'robolectric_tests/src/com/android/launcher3/model/GridBackupTableTest.java')
-rw-r--r-- | robolectric_tests/src/com/android/launcher3/model/GridBackupTableTest.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/robolectric_tests/src/com/android/launcher3/model/GridBackupTableTest.java b/robolectric_tests/src/com/android/launcher3/model/GridBackupTableTest.java new file mode 100644 index 000000000..53287a98b --- /dev/null +++ b/robolectric_tests/src/com/android/launcher3/model/GridBackupTableTest.java @@ -0,0 +1,115 @@ +package com.android.launcher3.model; + + +import static android.database.DatabaseUtils.queryNumEntries; + +import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME; +import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME; +import static com.android.launcher3.provider.LauncherDbUtils.tableExists; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import android.content.ContentValues; +import android.graphics.Point; + +import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.LauncherSettings.Settings; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +/** + * Unit tests for {@link GridBackupTable} + */ +@RunWith(RobolectricTestRunner.class) +public class GridBackupTableTest extends BaseGridChangesTestCase { + + private static final int BACKUP_ITEM_COUNT = 12; + + @Before + public void setupGridData() { + createGrid(new int[][][]{{ + { APP_ICON, APP_ICON, SHORTCUT, SHORTCUT}, + { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON}, + { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT}, + { APP_ICON, SHORTCUT, SHORTCUT, APP_ICON}, + }}); + assertEquals(BACKUP_ITEM_COUNT, queryNumEntries(mDb, TABLE_NAME)); + } + + @Test + public void backupTableCreated() { + GridBackupTable backupTable = new GridBackupTable(mContext, mDb, 4, 4, 4); + assertFalse(backupTable.backupOrRestoreAsNeeded()); + Settings.call(mContext.getContentResolver(), Settings.METHOD_REFRESH_BACKUP_TABLE); + + assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); + + // One extra entry for properties + assertEquals(BACKUP_ITEM_COUNT + 1, queryNumEntries(mDb, BACKUP_TABLE_NAME)); + } + + @Test + public void backupTableRestored() { + assertFalse(new GridBackupTable(mContext, mDb, 4, 4, 4).backupOrRestoreAsNeeded()); + Settings.call(mContext.getContentResolver(), Settings.METHOD_REFRESH_BACKUP_TABLE); + + // Delete entries + mDb.delete(TABLE_NAME, null, null); + assertEquals(0, queryNumEntries(mDb, TABLE_NAME)); + + GridBackupTable backupTable = new GridBackupTable(mContext, mDb, 3, 3, 3); + assertTrue(backupTable.backupOrRestoreAsNeeded()); + + // Items have been restored + assertEquals(BACKUP_ITEM_COUNT, queryNumEntries(mDb, TABLE_NAME)); + + Point outSize = new Point(); + assertEquals(4, backupTable.getRestoreHotseatAndGridSize(outSize)); + assertEquals(4, outSize.x); + assertEquals(4, outSize.y); + } + + @Test + public void backupTableRemovedOnAdd() { + assertFalse(new GridBackupTable(mContext, mDb, 4, 4, 4).backupOrRestoreAsNeeded()); + Settings.call(mContext.getContentResolver(), Settings.METHOD_REFRESH_BACKUP_TABLE); + + assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); + + addItem(1, 2, DESKTOP, 1, 1); + assertFalse(tableExists(mDb, BACKUP_TABLE_NAME)); + } + + @Test + public void backupTableRemovedOnDelete() { + assertFalse(new GridBackupTable(mContext, mDb, 4, 4, 4).backupOrRestoreAsNeeded()); + Settings.call(mContext.getContentResolver(), Settings.METHOD_REFRESH_BACKUP_TABLE); + + assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); + + mContext.getContentResolver().delete(Favorites.CONTENT_URI, null, null); + assertFalse(tableExists(mDb, BACKUP_TABLE_NAME)); + } + + @Test + public void backupTableRetainedOnUpdate() { + assertFalse(new GridBackupTable(mContext, mDb, 4, 4, 4).backupOrRestoreAsNeeded()); + Settings.call(mContext.getContentResolver(), Settings.METHOD_REFRESH_BACKUP_TABLE); + + assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); + + ContentValues values = new ContentValues(); + values.put(Favorites.RANK, 4); + // Something was updated + assertTrue(mContext.getContentResolver() + .update(Favorites.CONTENT_URI, values, null, null) > 0); + + // Backup table remains + assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); + } +} |