Chromium Code Reviews| Index: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
| index d1db744501ebe5a6cdc26accfe965b85a7afc742..4a8101ec8f3f88bded2b9347199259e6fd849f3b 100644 |
| --- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
| @@ -11,6 +11,7 @@ |
| import org.chromium.base.metrics.RecordHistogram; |
| import org.chromium.base.metrics.RecordUserAction; |
| import org.chromium.base.test.util.Feature; |
| +import org.chromium.chrome.browser.ntp.snippets.CategoryInt; |
| import org.chromium.chrome.browser.ntp.snippets.CategoryStatus; |
| import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsCardLayout; |
| import org.chromium.chrome.browser.ntp.snippets.FakeSuggestionsSource; |
| @@ -443,6 +444,82 @@ public void testSuggestionInvalidated() { |
| assertEquals(articles, mNtpAdapter.getItems().subList(2, 4)); |
| } |
| + /** |
| + * Tests that the order of the categories is kept. |
| + */ |
| + @Test |
| + @Feature({"Ntp"}) |
| + public void testCategoryOrder() { |
| + FakeSuggestionsSource suggestionsSource = new FakeSuggestionsSource(); |
| + registerCategory(suggestionsSource, KnownCategories.ARTICLES, 0); |
| + registerCategory(suggestionsSource, KnownCategories.BOOKMARKS, 0); |
| + registerCategory(suggestionsSource, KnownCategories.PHYSICAL_WEB_PAGES, 0); |
| + registerCategory(suggestionsSource, KnownCategories.DOWNLOADS, 0); |
| + |
| + NewTabPageAdapter ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null); |
| + List<ItemGroup> groups = ntpAdapter.getGroups(); |
| + |
| + assertEquals(6, groups.size()); |
| + assertEquals(AboveTheFoldItem.class, groups.get(0).getClass()); |
| + assertEquals(SuggestionsSection.class, groups.get(1).getClass()); |
| + assertEquals(KnownCategories.ARTICLES, getCategory(groups.get(1))); |
| + assertEquals(SuggestionsSection.class, groups.get(2).getClass()); |
| + assertEquals(KnownCategories.BOOKMARKS, getCategory(groups.get(2))); |
| + assertEquals(SuggestionsSection.class, groups.get(3).getClass()); |
| + assertEquals(KnownCategories.PHYSICAL_WEB_PAGES, getCategory(groups.get(3))); |
| + assertEquals(SuggestionsSection.class, groups.get(4).getClass()); |
| + assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(4))); |
| + |
| + // With a different order |
| + suggestionsSource = new FakeSuggestionsSource(); |
| + registerCategory(suggestionsSource, KnownCategories.ARTICLES, 0); |
| + registerCategory(suggestionsSource, KnownCategories.PHYSICAL_WEB_PAGES, 0); |
| + registerCategory(suggestionsSource, KnownCategories.DOWNLOADS, 0); |
| + registerCategory(suggestionsSource, KnownCategories.BOOKMARKS, 0); |
| + |
| + ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null); |
| + groups = ntpAdapter.getGroups(); |
| + |
| + assertEquals(6, groups.size()); |
| + assertEquals(AboveTheFoldItem.class, groups.get(0).getClass()); |
| + assertEquals(SuggestionsSection.class, groups.get(1).getClass()); |
| + assertEquals(KnownCategories.ARTICLES, getCategory(groups.get(1))); |
| + assertEquals(SuggestionsSection.class, groups.get(2).getClass()); |
| + assertEquals(KnownCategories.PHYSICAL_WEB_PAGES, getCategory(groups.get(2))); |
| + assertEquals(SuggestionsSection.class, groups.get(3).getClass()); |
| + assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(3))); |
| + assertEquals(SuggestionsSection.class, groups.get(4).getClass()); |
| + assertEquals(KnownCategories.BOOKMARKS, getCategory(groups.get(4))); |
| + |
| + // With unknown categories |
| + suggestionsSource = new FakeSuggestionsSource(); |
| + registerCategory(suggestionsSource, KnownCategories.ARTICLES, 0); |
| + registerCategory(suggestionsSource, KnownCategories.PHYSICAL_WEB_PAGES, 0); |
| + registerCategory(suggestionsSource, KnownCategories.DOWNLOADS, 0); |
| + |
| + ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null); |
| + |
| + // The adapter is already initialised, it will now only accept new categories if they have |
| + // suggestions/ |
| + registerCategory(suggestionsSource, 42, 1); |
| + registerCategory(suggestionsSource, KnownCategories.BOOKMARKS, 1); |
| + |
| + groups = ntpAdapter.getGroups(); |
| + |
| + assertEquals(7, groups.size()); |
| + assertEquals(AboveTheFoldItem.class, groups.get(0).getClass()); |
| + assertEquals(SuggestionsSection.class, groups.get(1).getClass()); |
| + assertEquals(KnownCategories.ARTICLES, getCategory(groups.get(1))); |
| + assertEquals(SuggestionsSection.class, groups.get(2).getClass()); |
| + assertEquals(KnownCategories.PHYSICAL_WEB_PAGES, getCategory(groups.get(2))); |
| + assertEquals(SuggestionsSection.class, groups.get(3).getClass()); |
| + assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(3))); |
| + assertEquals(SuggestionsSection.class, groups.get(4).getClass()); |
| + assertEquals(42, getCategory(groups.get(4))); |
| + assertEquals(SuggestionsSection.class, groups.get(5).getClass()); |
| + assertEquals(KnownCategories.BOOKMARKS, getCategory(groups.get(5))); |
| + } |
| + |
| private List<SnippetArticle> createDummySnippets(int count) { |
| List<SnippetArticle> snippets = new ArrayList<>(); |
| for (int index = 0; index < count; index++) { |
| @@ -453,4 +530,20 @@ public void testSuggestionInvalidated() { |
| } |
| return snippets; |
| } |
| + |
| + private void registerCategory(FakeSuggestionsSource suggestionsSource, |
| + @CategoryInt int category, int suggestionCount) { |
| + // Use available since the Adapter does not add fake suggestion source does not return |
|
Bernhard Bauer
2016/08/25 13:23:45
Nit: This sentence does not parse.
dgn
2016/08/25 15:09:40
Done. I have no memory of writing that. I was prob
Bernhard Bauer
2016/08/25 15:20:31
https://www.youtube.com/watch?v=SSUXXzN26zg
|
| + // snippets if it's not an available status |
| + suggestionsSource.setStatusForCategory(category, CategoryStatus.AVAILABLE); |
| + // Important: showIfEmptry flag to true. |
|
Bernhard Bauer
2016/08/25 13:23:45
Nit: showIfEmpty
dgn
2016/08/25 15:09:40
Done.
|
| + suggestionsSource.setInfoForCategory( |
| + category, new SuggestionsCategoryInfo( |
| + "", ContentSuggestionsCardLayout.FULL_CARD, false, true)); |
| + suggestionsSource.setSuggestionsForCategory(category, createDummySnippets(suggestionCount)); |
| + } |
| + |
| + private int getCategory(ItemGroup itemGroup) { |
| + return ((SuggestionsSection) itemGroup).getCategory(); |
| + } |
| } |