OSDN Git Service

Rank cards in descending score when loading from db.
authorFan Zhang <zhfan@google.com>
Thu, 8 Nov 2018 23:13:37 +0000 (15:13 -0800)
committerFan Zhang <zhfan@google.com>
Thu, 8 Nov 2018 23:31:37 +0000 (15:31 -0800)
Test: robotest
Change-Id: Ic40f6ed9e702a60f51d4ec6700e663f1689f0009

src/com/android/settings/homepage/contextualcards/CardDatabaseHelper.java
tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java

index 0065f5c..b5cdf87 100644 (file)
@@ -201,7 +201,7 @@ public class CardDatabaseHelper extends SQLiteOpenHelper {
         final String selection = CardColumns.CARD_DISMISSED + "=0";
         Cursor cursor = db.query(CARD_TABLE, null /* columns */, selection,
                 null /* selectionArgs */, null /* groupBy */, null /* having */,
-                null /* orderBy */);
+                CardColumns.SCORE + " DESC" /* orderBy */);
         return cursor;
     }
 
index b25508b..ef60f85 100644 (file)
@@ -18,10 +18,12 @@ package com.android.settings.homepage.contextualcards;
 
 import static com.google.common.truth.Truth.assertThat;
 
+import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 
+import com.android.settings.intelligence.ContextualCardProto;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.After;
@@ -30,6 +32,9 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RuntimeEnvironment;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @RunWith(SettingsRobolectricTestRunner.class)
 public class CardDatabaseHelperTest {
 
@@ -80,4 +85,38 @@ public class CardDatabaseHelperTest {
         assertThat(columnNames).isEqualTo(expectedNames);
         cursor.close();
     }
+
+    @Test
+    public void getContextualCards_shouldSortByScore() {
+        insertFakeCard(mDatabase, "card1", 1, "uri1");
+        insertFakeCard(mDatabase, "card2", 0, "uri2");
+        insertFakeCard(mDatabase, "card3", 10, "uri3");
+        // Should sort as 3,1,2
+        try (final Cursor cursor = CardDatabaseHelper.getInstance(mContext).getContextualCards()) {
+            assertThat(cursor.getCount()).isEqualTo(3);
+            final List<ContextualCard> cards = new ArrayList<>();
+            for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
+                cards.add(new ContextualCard(cursor));
+            }
+            assertThat(cards.get(0).getName()).isEqualTo("card3");
+            assertThat(cards.get(1).getName()).isEqualTo("card1");
+            assertThat(cards.get(2).getName()).isEqualTo("card2");
+        }
+    }
+
+    private static void insertFakeCard(SQLiteDatabase db, String name, double score, String uri) {
+        final ContentValues value = new ContentValues();
+        value.put(CardDatabaseHelper.CardColumns.NAME, name);
+        value.put(CardDatabaseHelper.CardColumns.SCORE, score);
+        value.put(CardDatabaseHelper.CardColumns.SLICE_URI, uri);
+
+        value.put(CardDatabaseHelper.CardColumns.TYPE, ContextualCard.CardType.SLICE);
+        value.put(CardDatabaseHelper.CardColumns.CATEGORY,
+                ContextualCardProto.ContextualCard.Category.DEFAULT.getNumber());
+        value.put(CardDatabaseHelper.CardColumns.PACKAGE_NAME,
+                RuntimeEnvironment.application.getPackageName());
+        value.put(CardDatabaseHelper.CardColumns.APP_VERSION, 1);
+
+        db.insert(CardDatabaseHelper.CARD_TABLE, null, value);
+    }
 }