Merge "Refactor entry displayName to label and use it for SPA search"

This commit is contained in:
Binyi Wu
2023-02-14 03:40:25 +00:00
committed by Android (Google) Code Review
15 changed files with 115 additions and 52 deletions

View File

@@ -64,7 +64,7 @@ object ItemListPageProvider : SettingsPageProvider {
return SettingsEntryBuilder.createInject(
owner = createSettingsPage(arguments),
displayName = "ItemList_$opParam",
label = "ItemList_$opParam",
).setUiLayoutFn {
Preference(
object : PreferenceModel {

View File

@@ -99,7 +99,7 @@ object ItemOperatePageProvider : SettingsPageProvider {
return SettingsEntryBuilder.createInject(
owner = createSettingsPage(arguments),
displayName = "ItemOp_$opParam",
label = "ItemOp_$opParam",
).setUiLayoutFn {
// Item name is a runtime parameter, which needs to be read inside UiLayoutFn
val itemName = parameter.getStringArg(ITEM_NAME_PARAM_NAME, it) ?: "NULL"

View File

@@ -87,7 +87,7 @@ object ArgumentPageProvider : SettingsPageProvider {
return SettingsEntryBuilder.createInject(
owner = createSettingsPage(arguments),
displayName = "${name}_$stringParam",
label = "${name}_$stringParam",
)
.setSearchDataFn { ArgumentPageModel.genInjectSearchData() }
.setUiLayoutFn {

View File

@@ -50,22 +50,22 @@ fun SettingsPage.debugBrief(): String {
}
fun SettingsEntry.debugBrief(): String {
return "${owner.displayName}:$displayName"
return "${owner.displayName}:$label"
}
fun SettingsEntry.debugContent(entryRepository: SettingsEntryRepository): String {
val searchData = getSearchData()
val statusData = getStatusData()
val entryPathWithName = entryRepository.getEntryPathWithDisplayName(id)
val entryPathWithLabel = entryRepository.getEntryPathWithLabel(id)
val entryPathWithTitle = entryRepository.getEntryPathWithTitle(id,
searchData?.title ?: displayName)
searchData?.title ?: label)
val content = listOf(
"------ STATIC ------",
"id = $id",
"owner = ${owner.debugBrief()} ${owner.debugArguments()}",
"linkFrom = ${fromPage?.debugBrief()} ${fromPage?.debugArguments()}",
"linkTo = ${toPage?.debugBrief()} ${toPage?.debugArguments()}",
"hierarchy_path = $entryPathWithName",
"hierarchy_path = $entryPathWithLabel",
"------ ATTRIBUTION ------",
"allowSearch = $isAllowSearch",
"isSearchDynamic = $isSearchDataDynamic",

View File

@@ -173,12 +173,12 @@ class DebugProvider : ContentProvider() {
val intent = entry.createIntent(SESSION_SEARCH) ?: Intent()
cursor.newRow()
.add(ColumnEnum.ENTRY_ID.id, entry.id)
.add(ColumnEnum.ENTRY_NAME.id, entry.displayName)
.add(ColumnEnum.ENTRY_LABEL.id, entry.label)
.add(ColumnEnum.ENTRY_ROUTE.id, entry.containerPage().buildRoute())
.add(ColumnEnum.ENTRY_INTENT_URI.id, intent.toUri(URI_INTENT_SCHEME))
.add(
ColumnEnum.ENTRY_HIERARCHY_PATH.id,
entryRepository.getEntryPathWithDisplayName(entry.id)
entryRepository.getEntryPathWithLabel(entry.id)
)
}
return cursor

View File

@@ -33,7 +33,7 @@ enum class ColumnEnum(val id: String) {
// Columns related to entry
ENTRY_ID("entryId"),
ENTRY_NAME("entryName"),
ENTRY_LABEL("entryLabel"),
ENTRY_ROUTE("entryRoute"),
ENTRY_INTENT_URI("entryIntent"),
ENTRY_HIERARCHY_PATH("entryPath"),
@@ -76,7 +76,7 @@ enum class QueryEnum(
"entry_info", 200,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_NAME,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.ENTRY_ROUTE,
ColumnEnum.ENTRY_INTENT_URI,
ColumnEnum.ENTRY_HIERARCHY_PATH,

View File

@@ -51,11 +51,13 @@ data class SettingsEntry(
// The unique id of this entry, which is computed by name + owner + fromPage + toPage.
val id: String,
// The name of the page, which is used to compute the unique id, and need to be stable.
// The name of the entry, which is used to compute the unique id, and need to be stable.
private val name: String,
// The display name of the page, for better readability.
val displayName: String,
// The label of the entry, for better readability.
// For migration mapping, this should match the android:key field in the old architecture
// if applicable.
val label: String,
// The owner page of this entry.
val owner: SettingsPage,

View File

@@ -21,14 +21,14 @@ import android.os.Bundle
import androidx.compose.runtime.remember
import com.android.settingslib.spa.framework.util.genEntryId
private const val INJECT_ENTRY_NAME = "INJECT"
private const val ROOT_ENTRY_NAME = "ROOT"
private const val INJECT_ENTRY_LABEL = "INJECT"
private const val ROOT_ENTRY_LABEL = "ROOT"
/**
* The helper to build a Settings Entry instance.
*/
class SettingsEntryBuilder(private val name: String, private val owner: SettingsPage) {
private var displayName = name
private var label = name
private var fromPage: SettingsPage? = null
private var toPage: SettingsPage? = null
@@ -51,7 +51,7 @@ class SettingsEntryBuilder(private val name: String, private val owner: Settings
id = genEntryId(name, owner, fromPage, toPage),
name = name,
owner = owner,
displayName = displayName,
label = label,
// linking data
fromPage = fromPage,
@@ -72,8 +72,8 @@ class SettingsEntryBuilder(private val name: String, private val owner: Settings
)
}
fun setDisplayName(displayName: String): SettingsEntryBuilder {
this.displayName = displayName
fun setLabel(label: String): SettingsEntryBuilder {
this.label = label
return this
}
@@ -147,19 +147,19 @@ class SettingsEntryBuilder(private val name: String, private val owner: Settings
return create(entryName, owner).setLink(toPage = owner)
}
fun create(owner: SettingsPage, entryName: String, displayName: String? = null):
fun create(owner: SettingsPage, entryName: String, label: String? = null):
SettingsEntryBuilder {
return SettingsEntryBuilder(entryName, owner).setDisplayName(displayName ?: entryName)
return SettingsEntryBuilder(entryName, owner).setLabel(label ?: entryName)
}
fun createInject(owner: SettingsPage, displayName: String? = null): SettingsEntryBuilder {
val name = displayName ?: "${INJECT_ENTRY_NAME}_${owner.displayName}"
return createLinkTo(INJECT_ENTRY_NAME, owner).setDisplayName(name)
fun createInject(owner: SettingsPage, label: String? = null): SettingsEntryBuilder {
val label = label ?: "${INJECT_ENTRY_LABEL}_${owner.displayName}"
return createLinkTo(INJECT_ENTRY_LABEL, owner).setLabel(label)
}
fun createRoot(owner: SettingsPage, displayName: String? = null): SettingsEntryBuilder {
val name = displayName ?: "${ROOT_ENTRY_NAME}_${owner.displayName}"
return createLinkTo(ROOT_ENTRY_NAME, owner).setDisplayName(name)
fun createRoot(owner: SettingsPage, label: String? = null): SettingsEntryBuilder {
val label = label ?: "${ROOT_ENTRY_LABEL}_${owner.displayName}"
return createLinkTo(ROOT_ENTRY_LABEL, owner).setLabel(label)
}
}
}

View File

@@ -111,9 +111,9 @@ class SettingsEntryRepository(sppRepository: SettingsPageProviderRepository) {
return entryPath
}
fun getEntryPathWithDisplayName(entryId: String): List<String> {
fun getEntryPathWithLabel(entryId: String): List<String> {
val entryPath = getEntryPath(entryId)
return entryPath.map { it.displayName }
return entryPath.map { it.label }
}
fun getEntryPathWithTitle(entryId: String, defaultTitle: String): List<String> {

View File

@@ -43,6 +43,7 @@ const val SEARCH_DYNAMIC_ROW = "search_dynamic_row"
/** Enum to define all column names in provider. */
enum class ColumnEnum(val id: String) {
ENTRY_ID("entryId"),
ENTRY_LABEL("entryLabel"),
SEARCH_TITLE("searchTitle"),
SEARCH_KEYWORD("searchKw"),
SEARCH_PATH("searchPath"),
@@ -50,7 +51,6 @@ enum class ColumnEnum(val id: String) {
INTENT_TARGET_CLASS("intentTargetClass"),
INTENT_EXTRAS("intentExtras"),
SLICE_URI("sliceUri"),
LEGACY_KEY("legacyKey"),
ENTRY_DISABLED("entryDisabled"),
}
@@ -64,6 +64,7 @@ enum class QueryEnum(
SEARCH_STATIC_DATA,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.SEARCH_TITLE,
ColumnEnum.SEARCH_KEYWORD,
ColumnEnum.SEARCH_PATH,
@@ -71,13 +72,13 @@ enum class QueryEnum(
ColumnEnum.INTENT_TARGET_CLASS,
ColumnEnum.INTENT_EXTRAS,
ColumnEnum.SLICE_URI,
ColumnEnum.LEGACY_KEY
)
),
SEARCH_DYNAMIC_DATA_QUERY(
SEARCH_DYNAMIC_DATA,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.SEARCH_TITLE,
ColumnEnum.SEARCH_KEYWORD,
ColumnEnum.SEARCH_PATH,
@@ -85,13 +86,13 @@ enum class QueryEnum(
ColumnEnum.INTENT_TARGET_CLASS,
ColumnEnum.INTENT_EXTRAS,
ColumnEnum.SLICE_URI,
ColumnEnum.LEGACY_KEY
)
),
SEARCH_IMMUTABLE_STATUS_DATA_QUERY(
SEARCH_IMMUTABLE_STATUS,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.ENTRY_DISABLED,
)
),
@@ -99,6 +100,7 @@ enum class QueryEnum(
SEARCH_MUTABLE_STATUS,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.ENTRY_DISABLED,
)
),
@@ -106,6 +108,7 @@ enum class QueryEnum(
SEARCH_STATIC_ROW,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.SEARCH_TITLE,
ColumnEnum.SEARCH_KEYWORD,
ColumnEnum.SEARCH_PATH,
@@ -113,7 +116,6 @@ enum class QueryEnum(
ColumnEnum.INTENT_TARGET_CLASS,
ColumnEnum.INTENT_EXTRAS,
ColumnEnum.SLICE_URI,
ColumnEnum.LEGACY_KEY,
ColumnEnum.ENTRY_DISABLED,
)
),
@@ -121,6 +123,7 @@ enum class QueryEnum(
SEARCH_DYNAMIC_ROW,
listOf(
ColumnEnum.ENTRY_ID,
ColumnEnum.ENTRY_LABEL,
ColumnEnum.SEARCH_TITLE,
ColumnEnum.SEARCH_KEYWORD,
ColumnEnum.SEARCH_PATH,
@@ -128,7 +131,6 @@ enum class QueryEnum(
ColumnEnum.INTENT_TARGET_CLASS,
ColumnEnum.INTENT_EXTRAS,
ColumnEnum.SLICE_URI,
ColumnEnum.LEGACY_KEY,
ColumnEnum.ENTRY_DISABLED,
)
),

View File

@@ -42,7 +42,7 @@ private const val TAG = "SpaSearchProvider"
* One can query the provider result by:
* $ adb shell content query --uri content://<AuthorityPath>/<QueryPath>
* For gallery, AuthorityPath = com.android.spa.gallery.search.provider
* For Settings, AuthorityPath = com.android.settings.spa.search.provider"
* For Settings, AuthorityPath = com.android.settings.spa.search.provider
* Some examples:
* $ adb shell content query --uri content://<AuthorityPath>/search_static_data
* $ adb shell content query --uri content://<AuthorityPath>/search_dynamic_data
@@ -205,6 +205,7 @@ class SpaSearchProvider : ContentProvider() {
val searchData = entry.getSearchData() ?: return
val intent = entry.createIntent(SESSION_SEARCH)
val row = cursor.newRow().add(ColumnEnum.ENTRY_ID.id, entry.id)
.add(ColumnEnum.ENTRY_LABEL.id, entry.label)
.add(ColumnEnum.SEARCH_TITLE.id, searchData.title)
.add(ColumnEnum.SEARCH_KEYWORD.id, searchData.keyword)
.add(
@@ -221,7 +222,6 @@ class SpaSearchProvider : ContentProvider() {
ColumnEnum.SLICE_URI.id, Uri.Builder()
.fromEntry(entry, spaEnvironment.sliceProviderAuthorities)
)
// TODO: support legacy key
}
private fun fetchStatusData(entry: SettingsEntry, cursor: MatrixCursor) {
@@ -229,6 +229,7 @@ class SpaSearchProvider : ContentProvider() {
val statusData = entry.getStatusData() ?: return
cursor.newRow()
.add(ColumnEnum.ENTRY_ID.id, entry.id)
.add(ColumnEnum.ENTRY_LABEL.id, entry.label)
.add(ColumnEnum.ENTRY_DISABLED.id, statusData.isDisabled)
}
@@ -239,6 +240,7 @@ class SpaSearchProvider : ContentProvider() {
val searchData = entry.getSearchData() ?: return
val intent = entry.createIntent(SESSION_SEARCH)
val row = cursor.newRow().add(ColumnEnum.ENTRY_ID.id, entry.id)
.add(ColumnEnum.ENTRY_LABEL.id, entry.label)
.add(ColumnEnum.SEARCH_TITLE.id, searchData.title)
.add(ColumnEnum.SEARCH_KEYWORD.id, searchData.keyword)
.add(
@@ -255,8 +257,6 @@ class SpaSearchProvider : ContentProvider() {
ColumnEnum.SLICE_URI.id, Uri.Builder()
.fromEntry(entry, spaEnvironment.sliceProviderAuthorities)
)
// TODO: support legacy key
// Fetch status data. We can add runtime arguments later if necessary
val statusData = entry.getStatusData() ?: return
row.add(ColumnEnum.ENTRY_DISABLED.id, statusData.isDisabled)

View File

@@ -115,7 +115,7 @@ class SettingsEntryRepositoryTest {
fun testGetEntryPath() {
SpaEnvironmentFactory.reset(spaEnvironment)
assertThat(
entryRepository.getEntryPathWithDisplayName(
entryRepository.getEntryPathWithLabel(
genEntryId("Layer2Entry1", SppLayer2.createSettingsPage())
)
).containsExactly("Layer2Entry1", "INJECT_SppLayer2", "INJECT_SppLayer1", "ROOT_SppHome")
@@ -129,7 +129,7 @@ class SettingsEntryRepositoryTest {
).containsExactly("entryTitle", "SppLayer2", "TitleLayer1", "TitleHome").inOrder()
assertThat(
entryRepository.getEntryPathWithDisplayName(
entryRepository.getEntryPathWithLabel(
genEntryId(
"INJECT",
SppLayer1.createSettingsPage(),

View File

@@ -68,7 +68,7 @@ class SettingsEntryTest {
val owner = createSettingsPage("mySpp")
val entry = SettingsEntryBuilder.create(owner, "myEntry").build()
assertThat(entry.id).isEqualTo(genEntryId("myEntry", owner))
assertThat(entry.displayName).isEqualTo("myEntry")
assertThat(entry.label).isEqualTo("myEntry")
assertThat(entry.owner.sppName).isEqualTo("mySpp")
assertThat(entry.owner.displayName).isEqualTo("mySpp")
assertThat(entry.fromPage).isNull()
@@ -87,14 +87,14 @@ class SettingsEntryTest {
val entryFrom =
SettingsEntryBuilder.createLinkFrom("myEntry", owner).setLink(toPage = toPage).build()
assertThat(entryFrom.id).isEqualTo(genEntryId("myEntry", owner, owner, toPage))
assertThat(entryFrom.displayName).isEqualTo("myEntry")
assertThat(entryFrom.label).isEqualTo("myEntry")
assertThat(entryFrom.fromPage!!.sppName).isEqualTo("mySpp")
assertThat(entryFrom.toPage!!.sppName).isEqualTo("toSpp")
val entryTo =
SettingsEntryBuilder.createLinkTo("myEntry", owner).setLink(fromPage = fromPage).build()
assertThat(entryTo.id).isEqualTo(genEntryId("myEntry", owner, fromPage, owner))
assertThat(entryTo.displayName).isEqualTo("myEntry")
assertThat(entryTo.label).isEqualTo("myEntry")
assertThat(entryTo.fromPage!!.sppName).isEqualTo("fromSpp")
assertThat(entryTo.toPage!!.sppName).isEqualTo("mySpp")
}
@@ -108,7 +108,7 @@ class SettingsEntryTest {
INJECT_ENTRY_NAME_TEST, owner, toPage = owner
)
)
assertThat(entryInject.displayName).isEqualTo("${INJECT_ENTRY_NAME_TEST}_mySpp")
assertThat(entryInject.label).isEqualTo("${INJECT_ENTRY_NAME_TEST}_mySpp")
assertThat(entryInject.fromPage).isNull()
assertThat(entryInject.toPage).isNotNull()
}
@@ -122,7 +122,7 @@ class SettingsEntryTest {
ROOT_ENTRY_NAME_TEST, owner, toPage = owner
)
)
assertThat(entryInject.displayName).isEqualTo("myRootEntry")
assertThat(entryInject.label).isEqualTo("myRootEntry")
assertThat(entryInject.fromPage).isNull()
assertThat(entryInject.toPage).isNotNull()
}
@@ -133,14 +133,14 @@ class SettingsEntryTest {
val owner = createSettingsPage("SppHome")
val entryBuilder =
SettingsEntryBuilder.create(owner, "myEntry")
.setDisplayName("myEntryDisplay")
.setLabel("myEntryDisplay")
.setIsSearchDataDynamic(false)
.setHasMutableStatus(true)
.setSearchDataFn { null }
.setSliceDataFn { _, _ -> null }
val entry = entryBuilder.build()
assertThat(entry.id).isEqualTo(genEntryId("myEntry", owner))
assertThat(entry.displayName).isEqualTo("myEntryDisplay")
assertThat(entry.label).isEqualTo("myEntryDisplay")
assertThat(entry.fromPage).isNull()
assertThat(entry.toPage).isNull()
assertThat(entry.isAllowSearch).isTrue()
@@ -152,14 +152,14 @@ class SettingsEntryTest {
val ownerDisabled = createSettingsPage("SppDisabled")
val entryBuilderDisabled =
SettingsEntryBuilder.create(ownerDisabled, "myEntry")
.setDisplayName("myEntryDisplay")
.setLabel("myEntryDisplay")
.setIsSearchDataDynamic(false)
.setHasMutableStatus(true)
.setSearchDataFn { null }
.setSliceDataFn { _, _ -> null }
val entryDisabled = entryBuilderDisabled.build()
assertThat(entryDisabled.id).isEqualTo(genEntryId("myEntry", ownerDisabled))
assertThat(entryDisabled.displayName).isEqualTo("myEntryDisplay")
assertThat(entryDisabled.label).isEqualTo("myEntryDisplay")
assertThat(entryDisabled.fromPage).isNull()
assertThat(entryDisabled.toPage).isNull()
assertThat(entryDisabled.isAllowSearch).isFalse()
@@ -175,7 +175,7 @@ class SettingsEntryTest {
SpaEnvironmentFactory.reset()
val entry3 = entryBuilder.build()
assertThat(entry3.id).isEqualTo(genEntryId("myEntry", owner))
assertThat(entry3.displayName).isEqualTo("myEntryDisplay")
assertThat(entry3.label).isEqualTo("myEntryDisplay")
assertThat(entry3.fromPage).isNull()
assertThat(entry3.toPage).isNull()
assertThat(entry3.isAllowSearch).isFalse()

View File

@@ -62,6 +62,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchDynamicWithImmutableStatus")
)
immutableStatus.checkValue(
QueryEnum.SEARCH_IMMUTABLE_STATUS_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchDynamicWithImmutableStatus")
)
immutableStatus.checkValue(
QueryEnum.SEARCH_IMMUTABLE_STATUS_DATA_QUERY, ColumnEnum.ENTRY_DISABLED, true.toString()
)
@@ -74,6 +79,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchStaticWithMutableStatus")
)
mutableStatus.checkValue(
QueryEnum.SEARCH_MUTABLE_STATUS_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchStaticWithMutableStatus")
)
mutableStatus.checkValue(
QueryEnum.SEARCH_MUTABLE_STATUS_DATA_QUERY, ColumnEnum.ENTRY_DISABLED, false.toString()
)
@@ -84,6 +94,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchDynamicWithMutableStatus")
)
mutableStatus.checkValue(
QueryEnum.SEARCH_MUTABLE_STATUS_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchDynamicWithMutableStatus")
)
mutableStatus.checkValue(
QueryEnum.SEARCH_MUTABLE_STATUS_DATA_QUERY, ColumnEnum.ENTRY_DISABLED, true.toString()
)
@@ -101,6 +116,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchStaticWithNoStatus")
)
staticData.checkValue(
QueryEnum.SEARCH_STATIC_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchStaticWithNoStatus")
)
staticData.checkValue(
QueryEnum.SEARCH_STATIC_DATA_QUERY, ColumnEnum.SEARCH_TITLE, "SearchStaticWithNoStatus"
)
@@ -139,6 +159,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchStaticWithMutableStatus")
)
staticData.checkValue(
QueryEnum.SEARCH_STATIC_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchStaticWithMutableStatus")
)
val dynamicData = searchProvider.querySearchDynamicData()
Truth.assertThat(dynamicData.count).isEqualTo(2)
@@ -148,6 +173,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchDynamicWithMutableStatus")
)
dynamicData.checkValue(
QueryEnum.SEARCH_DYNAMIC_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchDynamicWithMutableStatus")
)
dynamicData.moveToNext()
dynamicData.checkValue(
@@ -155,6 +185,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchDynamicWithImmutableStatus")
)
dynamicData.checkValue(
QueryEnum.SEARCH_DYNAMIC_DATA_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchDynamicWithImmutableStatus")
)
dynamicData.checkValue(
QueryEnum.SEARCH_DYNAMIC_DATA_QUERY,
ColumnEnum.SEARCH_KEYWORD,
@@ -174,6 +209,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchStaticWithNoStatus")
)
staticRow.checkValue(
QueryEnum.SEARCH_STATIC_ROW_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchStaticWithNoStatus")
)
staticRow.checkValue(
QueryEnum.SEARCH_STATIC_ROW_QUERY, ColumnEnum.SEARCH_TITLE, "SearchStaticWithNoStatus"
)
@@ -222,6 +262,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchStaticWithMutableStatus")
)
dynamicRow.checkValue(
QueryEnum.SEARCH_DYNAMIC_ROW_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchStaticWithMutableStatus")
)
dynamicRow.checkValue(
QueryEnum.SEARCH_DYNAMIC_ROW_QUERY, ColumnEnum.ENTRY_DISABLED, false.toString()
)
@@ -232,6 +277,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchDynamicWithMutableStatus")
)
dynamicRow.checkValue(
QueryEnum.SEARCH_DYNAMIC_ROW_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchDynamicWithMutableStatus")
)
dynamicRow.checkValue(
QueryEnum.SEARCH_DYNAMIC_ROW_QUERY, ColumnEnum.ENTRY_DISABLED, true.toString()
)
@@ -243,6 +293,11 @@ class SpaSearchProviderTest {
ColumnEnum.ENTRY_ID,
pageOwner.getEntryId("SearchDynamicWithImmutableStatus")
)
dynamicRow.checkValue(
QueryEnum.SEARCH_DYNAMIC_ROW_QUERY,
ColumnEnum.ENTRY_LABEL,
pageOwner.getEntryLabel("SearchDynamicWithImmutableStatus")
)
dynamicRow.checkValue(
QueryEnum.SEARCH_DYNAMIC_ROW_QUERY,
ColumnEnum.SEARCH_KEYWORD,
@@ -271,3 +326,7 @@ private fun Cursor.getExtras(query: QueryEnum, column: ColumnEnum): Bundle? {
private fun SettingsPage.getEntryId(name: String): String {
return SettingsEntryBuilder.create(this, name).build().id
}
private fun SettingsPage.getEntryLabel(name: String): String {
return SettingsEntryBuilder.create(this, name).build().label
}

View File

@@ -81,7 +81,7 @@ class TogglePermissionAppInfoPageTest {
val entryList = appInfoPageProvider.buildEntry(null)
assertThat(entryList).hasSize(1)
assertThat(entryList[0].displayName).isEqualTo("AllowControl")
assertThat(entryList[0].label).isEqualTo("AllowControl")
}
@Test