1 package com.android.launcher3.provider; 2 3 import android.content.ContentValues; 4 import android.database.Cursor; 5 import android.database.sqlite.SQLiteDatabase; 6 import android.support.test.InstrumentationRegistry; 7 import android.support.test.filters.MediumTest; 8 import android.support.test.runner.AndroidJUnit4; 9 10 import com.android.launcher3.LauncherProvider.DatabaseHelper; 11 import com.android.launcher3.LauncherSettings.Favorites; 12 13 import org.junit.Test; 14 import org.junit.runner.RunWith; 15 16 import static org.junit.Assert.assertEquals; 17 18 /** 19 * Tests for {@link RestoreDbTask} 20 */ 21 @MediumTest 22 @RunWith(AndroidJUnit4.class) 23 public class RestoreDbTaskTest { 24 25 @Test testGetProfileId()26 public void testGetProfileId() throws Exception { 27 SQLiteDatabase db = new MyDatabaseHelper(23).getWritableDatabase(); 28 assertEquals(23, new RestoreDbTask().getDefaultProfileId(db)); 29 } 30 31 @Test testMigrateProfileId()32 public void testMigrateProfileId() throws Exception { 33 SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase(); 34 // Add some dummy data 35 for (int i = 0; i < 5; i++) { 36 ContentValues values = new ContentValues(); 37 values.put(Favorites._ID, i); 38 values.put(Favorites.TITLE, "item " + i); 39 db.insert(Favorites.TABLE_NAME, null, values); 40 } 41 // Verify item add 42 assertEquals(5, getCount(db, "select * from favorites where profileId = 42")); 43 44 new RestoreDbTask().migrateProfileId(db, 33); 45 46 // verify data migrated 47 assertEquals(0, getCount(db, "select * from favorites where profileId = 42")); 48 assertEquals(5, getCount(db, "select * from favorites where profileId = 33")); 49 50 // Verify default value changed 51 ContentValues values = new ContentValues(); 52 values.put(Favorites._ID, 100); 53 values.put(Favorites.TITLE, "item 100"); 54 db.insert(Favorites.TABLE_NAME, null, values); 55 assertEquals(6, getCount(db, "select * from favorites where profileId = 33")); 56 } 57 getCount(SQLiteDatabase db, String sql)58 private int getCount(SQLiteDatabase db, String sql) { 59 try (Cursor c = db.rawQuery(sql, null)) { 60 return c.getCount(); 61 } 62 } 63 64 private class MyDatabaseHelper extends DatabaseHelper { 65 66 private final long mProfileId; 67 MyDatabaseHelper(long profileId)68 MyDatabaseHelper(long profileId) { 69 super(InstrumentationRegistry.getContext(), null, null); 70 mProfileId = profileId; 71 } 72 73 @Override getDefaultUserSerial()74 public long getDefaultUserSerial() { 75 return mProfileId; 76 } 77 78 @Override handleOneTimeDataUpgrade(SQLiteDatabase db)79 protected void handleOneTimeDataUpgrade(SQLiteDatabase db) { } 80 onEmptyDbCreated()81 protected void onEmptyDbCreated() { } 82 } 83 } 84