Update Settings search result unique ids

- SearchResult stableIds are now DocIds from the database
- DocIds are data reference key's hash, when the key is not
empty or null
- Otherwise, DocIds are a hashcode from a set of fields.

Change-Id: Id36f7bf4ceaaa3a2bd326ecafbfe97fd0b247df2
Fixes: 37327194
Test: make RunSettingsRoboTest
This commit is contained in:
Matthew Fritze
2017-05-12 15:59:19 -07:00
parent 7f2d779e15
commit 6efea1e624
12 changed files with 347 additions and 499 deletions

View File

@@ -47,6 +47,7 @@ import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
@@ -120,10 +121,11 @@ public class IntentSearchViewHolderTest {
@Test
public void testBindViewElements_emptySummary_hideSummaryView() {
final SearchResult result = new Builder()
.addTitle(TITLE)
.addRank(1)
.addPayload(new ResultPayload(null))
.addIcon(mIcon)
.setTitle(TITLE)
.setRank(1)
.setPayload(new ResultPayload(null))
.setIcon(mIcon)
.setStableId(1)
.build();
mHolder.onBind(mFragment, result);
@@ -137,11 +139,12 @@ public class IntentSearchViewHolderTest {
breadcrumbs.add("b");
breadcrumbs.add("c");
final SearchResult result = new Builder()
.addTitle(TITLE)
.addRank(1)
.addPayload(new ResultPayload(null))
.setTitle(TITLE)
.setRank(1)
.setPayload(new ResultPayload(null))
.addBreadcrumbs(breadcrumbs)
.addIcon(mIcon)
.setIcon(mIcon)
.setStableId(1)
.build();
mHolder.onBind(mFragment, result);
@@ -153,9 +156,10 @@ public class IntentSearchViewHolderTest {
public void testBindElements_placeholderSummary_visibilityIsGone() {
String nonBreakingSpace = mContext.getString(R.string.summary_placeholder);
SearchResult result = new Builder()
.addTitle(TITLE)
.addSummary(nonBreakingSpace)
.addPayload(new ResultPayload(null))
.setTitle(TITLE)
.setSummary(nonBreakingSpace)
.setPayload(new ResultPayload(null))
.setStableId(1)
.build();
mHolder.onBind(mFragment, result);
@@ -165,13 +169,15 @@ public class IntentSearchViewHolderTest {
private SearchResult getSearchResult(String title, String summary, Drawable icon) {
Builder builder = new Builder();
builder.addTitle(title)
.addSummary(summary)
.addRank(1)
.addPayload(new ResultPayload(
builder.setStableId(Objects.hash(title, summary, icon))
.setTitle(title)
.setSummary(summary)
.setRank(1)
.setPayload(new ResultPayload(
new Intent().setComponent(new ComponentName("pkg", "class"))))
.addBreadcrumbs(new ArrayList<>())
.addIcon(icon);
.setStableId(1)
.setIcon(icon);
return builder.build();
}