diff --git a/src/com/android/settings/homepage/contextualcards/CardDatabaseHelper.java b/src/com/android/settings/homepage/contextualcards/CardDatabaseHelper.java index 0065f5c2525..b5cdf87cf53 100644 --- a/src/com/android/settings/homepage/contextualcards/CardDatabaseHelper.java +++ b/src/com/android/settings/homepage/contextualcards/CardDatabaseHelper.java @@ -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; } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java index b25508b13d5..ef60f85ff62 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java @@ -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 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); + } }