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