Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6735a3f0 authored by Fan Zhang's avatar Fan Zhang
Browse files

Rank cards in descending score when loading from db.

Test: robotest
Change-Id: Ic40f6ed9e702a60f51d4ec6700e663f1689f0009
parent 08d8ed80
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
    }

+39 −0
Original line number Diff line number Diff line
@@ -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);
    }
}