Change the way we generate stable id for DashboardSummary

- The countItem() method generates id based on position of Tile. This is
not truely stable.
- Added stable id constants for static views, and use hash of title as
stable id for tiles.

Bug: 33861822
Test: robotests
Change-Id: Ibbc88c82655503dc3964cb0c430c779dc9c93d41
This commit is contained in:
Fan Zhang
2017-06-29 12:58:39 -07:00
parent 6d1bb15f3b
commit a29346bab8
2 changed files with 89 additions and 70 deletions

View File

@@ -37,7 +37,13 @@ import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import static com.android.settings.dashboard.DashboardData.STABLE_ID_CONDITION_CONTAINER;
import static com.android.settings.dashboard.DashboardData.STABLE_ID_SUGGESTION_CONDITION_FOOTER;
import static com.android.settings.dashboard.DashboardData
.STABLE_ID_SUGGESTION_CONDITION_TOP_HEADER;
import static com.android.settings.dashboard.DashboardData.STABLE_ID_SUGGESTION_CONTAINER;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -112,6 +118,20 @@ public class DashboardDataTest {
.build();
}
@Test
public void testBuildItemsData_shouldSetstableId() {
final List<DashboardData.Item> items = mDashboardDataWithOneConditions.getItemList();
// Header, suggestion, condition, footer, 1 tile
assertThat(items).hasSize(5);
assertThat(items.get(0).id).isEqualTo(STABLE_ID_SUGGESTION_CONDITION_TOP_HEADER);
assertThat(items.get(1).id).isEqualTo(STABLE_ID_SUGGESTION_CONTAINER);
assertThat(items.get(2).id).isEqualTo(STABLE_ID_CONDITION_CONTAINER);
assertThat(items.get(3).id).isEqualTo(STABLE_ID_SUGGESTION_CONDITION_FOOTER);
assertThat(items.get(4).id).isEqualTo(Objects.hash(mTestCategoryTile.title));
}
@Test
public void testBuildItemsData_containsAllData() {
final DashboardData.SuggestionConditionHeaderData data =