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        try (Cursor c = db.rawQuery(sql, null)) {
51            return c.getCount();
52        }
53    }
54
55    private class MyDatabaseHelper extends DatabaseHelper {
56
57        private final long mProfileId;
58
59        MyDatabaseHelper(long profileId) {
60            super(getContext(), null, null);
61            mProfileId = profileId;
62        }
63
64        @Override
65        public long getDefaultUserSerial() {
66            return mProfileId;
67        }
68
69        protected void onEmptyDbCreated() { }
70    }
71}
72