• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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