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