From 80a024f9dd2353c4dcbc687d985bc1fbc4a0c905 Mon Sep 17 00:00:00 2001
From: Oleg Semenenko <146032743+oleg-livefront@users.noreply.github.com>
Date: Wed, 7 Feb 2024 14:49:42 -0600
Subject: [PATCH] BIT-1592 Update element ID location for search items (#970)

---
 .../ui/platform/feature/search/SearchContent.kt          | 4 +++-
 .../ui/platform/feature/search/SearchEmptyContent.kt     | 3 +++
 .../bitwarden/ui/platform/feature/search/SearchScreen.kt | 1 +
 .../feature/search/util/SearchTypeDataExtensions.kt      | 9 +++++++++
 .../x8bit/bitwarden/ui/tools/feature/send/SendContent.kt | 1 -
 .../x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt   | 3 ---
 6 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchContent.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchContent.kt
index e2a4092a7..08827a141 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchContent.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchContent.kt
@@ -26,6 +26,7 @@ import com.x8bit.bitwarden.ui.platform.components.SelectionItemData
 import com.x8bit.bitwarden.ui.platform.components.model.toIconResources
 import com.x8bit.bitwarden.ui.platform.feature.search.handlers.SearchHandlers
 import com.x8bit.bitwarden.ui.platform.feature.search.model.AutofillSelectionOption
+import com.x8bit.bitwarden.ui.platform.feature.search.util.searchItemTestTag
 import com.x8bit.bitwarden.ui.vault.feature.itemlisting.model.ListingItemOverflowAction
 import kotlinx.collections.immutable.toPersistentList
 
@@ -37,6 +38,7 @@ import kotlinx.collections.immutable.toPersistentList
 fun SearchContent(
     viewState: SearchState.ViewState.Content,
     searchHandlers: SearchHandlers,
+    searchType: SearchTypeData,
     modifier: Modifier = Modifier,
 ) {
     var showConfirmationDialog: ListingItemOverflowAction? by rememberSaveable {
@@ -153,7 +155,7 @@ fun SearchContent(
                     }
                     .toPersistentList(),
                 modifier = Modifier
-                    .semantics { testTag = "CipherCell" }
+                    .semantics { testTag = searchType.searchItemTestTag }
                     .fillMaxWidth()
                     .padding(
                         start = 16.dp,
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchEmptyContent.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchEmptyContent.kt
index 6a8f5b17e..430908ada 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchEmptyContent.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchEmptyContent.kt
@@ -15,6 +15,8 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.semantics.testTag
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
 import com.x8bit.bitwarden.R
@@ -47,6 +49,7 @@ fun SearchEmptyContent(
             Text(
                 textAlign = TextAlign.Center,
                 modifier = Modifier
+                    .semantics { testTag = "NoSearchResultsLabel" }
                     .fillMaxWidth()
                     .padding(horizontal = 16.dp),
                 text = it(),
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchScreen.kt
index 47a2e021c..2b1a525e7 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchScreen.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/SearchScreen.kt
@@ -130,6 +130,7 @@ fun SearchScreen(
                 is SearchState.ViewState.Content -> SearchContent(
                     viewState = viewState,
                     searchHandlers = searchHandlers,
+                    searchType = state.searchType,
                     modifier = innerModifier,
                 )
 
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt
index e8da7d98a..874864688 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt
@@ -63,6 +63,15 @@ fun SearchTypeData.updateWithAdditionalDataIfNecessary(
         SearchTypeData.Vault.VerificationCodes -> this
     }
 
+/**
+ * The semantic test tag to use for the search item.
+ */
+val SearchTypeData.searchItemTestTag: String
+    get() = when (this) {
+        is SearchTypeData.Sends -> "SendCell"
+        is SearchTypeData.Vault -> "CipherCell"
+    }
+
 /**
  * Filters out any [CipherView]s that do not adhere to the [searchTypeData] and [searchTerm] and
  * sorts the remaining items.
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendContent.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendContent.kt
index ed139325d..d1b649a9e 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendContent.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendContent.kt
@@ -108,7 +108,6 @@ fun SendContent(
                     null
                 },
                 modifier = Modifier
-                    .semantics { testTag = "SendCell" }
                     .padding(
                         start = 16.dp,
                         // There is some built-in padding to the menu button that makes up
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt
index 03b6755cf..03d7e9a37 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt
@@ -15,8 +15,6 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.semantics.semantics
-import androidx.compose.ui.semantics.testTag
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
 import com.x8bit.bitwarden.R
@@ -52,7 +50,6 @@ fun SendEmpty(
             text = stringResource(id = R.string.no_sends),
             style = MaterialTheme.typography.bodyMedium,
             modifier = Modifier
-                .semantics { testTag = "NoSearchResultsLabel" }
                 .fillMaxWidth()
                 .padding(horizontal = 16.dp),
         )