Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(934)

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java

Issue 2196273002: Zine: support multiple sections in the ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java_sources.gni ('k') | chrome/browser/android/ntp/ntp_snippets_bridge.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 c2e8c066bf5fc05525ec5b7766231e08af757b21..779707497126d88dd6424ec0e614eb52dbef1405 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
@@ -7,28 +7,29 @@ package org.chromium.chrome.browser.ntp.cards;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
+import android.graphics.Bitmap;
+
+import org.chromium.base.Callback;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.test.util.Feature;
-import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus;
+import org.chromium.chrome.browser.ntp.snippets.CategoryStatus.CategoryStatusEnum;
+import org.chromium.chrome.browser.ntp.snippets.KnownCategories;
+import org.chromium.chrome.browser.ntp.snippets.KnownCategories.KnownCategoriesEnum;
import org.chromium.chrome.browser.ntp.snippets.SnippetArticleListItem;
-import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
-import org.chromium.chrome.browser.ntp.snippets.SnippetsSource.SnippetsObserver;
+import org.chromium.chrome.browser.ntp.snippets.SnippetsSource;
import org.chromium.testing.local.LocalRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
@@ -37,25 +38,58 @@ import java.util.List;
@RunWith(LocalRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class NewTabPageAdapterTest {
+ private static class FakeSnippetsSource implements SnippetsSource {
+ private SnippetsSource.SnippetsObserver mObserver;
+ private final Map<Integer, Integer> mCategoryStatus = new HashMap<>();
+
+ public void setStatusForCategory(@KnownCategoriesEnum int category,
+ @CategoryStatusEnum int status) {
+ mCategoryStatus.put(category, status);
+ if (mObserver != null) mObserver.onCategoryStatusChanged(category, status);
+ }
+
+ public void setSnippetsForCategory(@KnownCategoriesEnum int category,
+ List<SnippetArticleListItem> snippets) {
+ mObserver.onSuggestionsReceived(category, snippets);
+ }
+
+ @Override
+ public void discardSnippet(SnippetArticleListItem snippet) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void fetchSnippetImage(SnippetArticleListItem snippet, Callback<Bitmap> callback) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void getSnippedVisited(SnippetArticleListItem snippet, Callback<Boolean> callback) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setObserver(SnippetsObserver observer) {
+ mObserver = observer;
+ }
+
+ @CategoryStatusEnum
+ @Override
+ public int getCategoryStatus(@KnownCategoriesEnum int category) {
+ return mCategoryStatus.get(category);
+ }
+ }
- private NewTabPageManager mNewTabPageManager;
- private SnippetsObserver mSnippetsObserver;
- private SnippetsBridge mSnippetsBridge;
+ private FakeSnippetsSource mSnippetsSource = new FakeSnippetsSource();
+ private NewTabPageAdapter mNtpAdapter;
@Before
public void setUp() {
RecordHistogram.disableForTests();
- mNewTabPageManager = mock(NewTabPageManager.class);
- mSnippetsObserver = null;
- mSnippetsBridge = mock(SnippetsBridge.class);
-
- // Intercept the observers so that we can mock invocations.
- doAnswer(new Answer<Void>() {
- @Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
- mSnippetsObserver = invocation.getArgumentAt(0, SnippetsObserver.class);
- return null;
- }}).when(mSnippetsBridge).setObserver(any(SnippetsObserver.class));
+
+ mSnippetsSource = new FakeSnippetsSource();
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.INITIALIZING);
+ mNtpAdapter = new NewTabPageAdapter(null, null, mSnippetsSource, null);
}
/**
@@ -65,31 +99,28 @@ public class NewTabPageAdapterTest {
@Test
@Feature({"Ntp"})
public void testSnippetLoading() {
- NewTabPageAdapter ntpa =
- new NewTabPageAdapter(mNewTabPageManager, null, mSnippetsBridge, null);
-
- assertEquals(5, ntpa.getItemCount());
- assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, ntpa.getItemViewType(0));
- assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, ntpa.getItemViewType(1));
- assertEquals(NewTabPageListItem.VIEW_TYPE_STATUS, ntpa.getItemViewType(2));
- assertEquals(NewTabPageListItem.VIEW_TYPE_PROGRESS, ntpa.getItemViewType(3));
- assertEquals(NewTabPageListItem.VIEW_TYPE_SPACING, ntpa.getItemViewType(4));
+ assertEquals(5, mNtpAdapter.getItemCount());
+ assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_STATUS, mNtpAdapter.getItemViewType(2));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_PROGRESS, mNtpAdapter.getItemViewType(3));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_SPACING, mNtpAdapter.getItemViewType(4));
List<SnippetArticleListItem> snippets = createDummySnippets();
- mSnippetsObserver.onSnippetsReceived(snippets);
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
- List<NewTabPageListItem> loadedItems = new ArrayList<>(ntpa.getItemsForTesting());
- assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, ntpa.getItemViewType(0));
- assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, ntpa.getItemViewType(1));
+ List<NewTabPageListItem> loadedItems = new ArrayList<>(mNtpAdapter.getItems());
+ assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
assertEquals(snippets, loadedItems.subList(2, loadedItems.size() - 1));
- assertEquals(
- NewTabPageListItem.VIEW_TYPE_SPACING, ntpa.getItemViewType(loadedItems.size() - 1));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_SPACING,
+ mNtpAdapter.getItemViewType(loadedItems.size() - 1));
// The adapter should ignore any new incoming data.
- mSnippetsObserver.onSnippetsReceived(
- Arrays.asList(new SnippetArticleListItem[] {new SnippetArticleListItem(
- "foo", "title1", "pub1", "txt1", "foo", "bar", 0, 0, 0)}));
- assertEquals(loadedItems, ntpa.getItemsForTesting());
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES,
+ Arrays.asList(new SnippetArticleListItem[] { new SnippetArticleListItem(
+ "foo", "title1", "pub1", "txt1", "foo", "bar", 0, 0, 0) }));
+ assertEquals(loadedItems, mNtpAdapter.getItems());
}
/**
@@ -99,33 +130,32 @@ public class NewTabPageAdapterTest {
@Test
@Feature({"Ntp"})
public void testSnippetLoadingInitiallyEmpty() {
- NewTabPageAdapter ntpa =
- new NewTabPageAdapter(mNewTabPageManager, null, mSnippetsBridge, null);
-
// If we don't get anything, we should be in the same situation as the initial one.
- mSnippetsObserver.onSnippetsReceived(new ArrayList<SnippetArticleListItem>());
- assertEquals(5, ntpa.getItemCount());
- assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, ntpa.getItemViewType(0));
- assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, ntpa.getItemViewType(1));
- assertEquals(NewTabPageListItem.VIEW_TYPE_STATUS, ntpa.getItemViewType(2));
- assertEquals(NewTabPageListItem.VIEW_TYPE_PROGRESS, ntpa.getItemViewType(3));
- assertEquals(NewTabPageListItem.VIEW_TYPE_SPACING, ntpa.getItemViewType(4));
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES,
+ new ArrayList<SnippetArticleListItem>());
+ assertEquals(5, mNtpAdapter.getItemCount());
+ assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_STATUS, mNtpAdapter.getItemViewType(2));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_PROGRESS, mNtpAdapter.getItemViewType(3));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_SPACING, mNtpAdapter.getItemViewType(4));
// We should load new snippets when we get notified about them.
List<SnippetArticleListItem> snippets = createDummySnippets();
- mSnippetsObserver.onSnippetsReceived(snippets);
- List<NewTabPageListItem> loadedItems = new ArrayList<>(ntpa.getItemsForTesting());
- assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, ntpa.getItemViewType(0));
- assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, ntpa.getItemViewType(1));
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ List<NewTabPageListItem> loadedItems = new ArrayList<>(mNtpAdapter.getItems());
+ assertEquals(NewTabPageListItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
assertEquals(snippets, loadedItems.subList(2, loadedItems.size() - 1));
- assertEquals(
- NewTabPageListItem.VIEW_TYPE_SPACING, ntpa.getItemViewType(loadedItems.size() - 1));
+ assertEquals(NewTabPageListItem.VIEW_TYPE_SPACING,
+ mNtpAdapter.getItemViewType(loadedItems.size() - 1));
// The adapter should ignore any new incoming data.
- mSnippetsObserver.onSnippetsReceived(
+ mSnippetsSource.setSnippetsForCategory(
+ KnownCategories.ARTICLES,
Arrays.asList(new SnippetArticleListItem[] {new SnippetArticleListItem(
"foo", "title1", "pub1", "txt1", "foo", "bar", 0, 0, 0)}));
- assertEquals(loadedItems, ntpa.getItemsForTesting());
+ assertEquals(loadedItems, mNtpAdapter.getItems());
}
/**
@@ -134,27 +164,27 @@ public class NewTabPageAdapterTest {
@Test
@Feature({"Ntp"})
public void testSnippetClearing() {
- NewTabPageAdapter ntpa =
- new NewTabPageAdapter(mNewTabPageManager, null, mSnippetsBridge, null);
-
List<SnippetArticleListItem> snippets = createDummySnippets();
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(3 + snippets.size(), ntpa.getItemCount());
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(3 + snippets.size(), mNtpAdapter.getItemCount());
// If we get told that snippets are enabled, we just leave the current
// ones there and not clear.
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.AVAILABLE);
- assertEquals(3 + snippets.size(), ntpa.getItemCount());
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.AVAILABLE);
+ assertEquals(3 + snippets.size(), mNtpAdapter.getItemCount());
// When snippets are disabled, we clear them and we should go back to
// the situation with the status card.
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.SIGNED_OUT);
- assertEquals(5, ntpa.getItemCount());
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.SIGNED_OUT);
+ assertEquals(5, mNtpAdapter.getItemCount());
// The adapter should now be waiting for new snippets.
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.AVAILABLE);
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(3 + snippets.size(), ntpa.getItemCount());
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.AVAILABLE);
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(3 + snippets.size(), mNtpAdapter.getItemCount());
}
/**
@@ -163,35 +193,35 @@ public class NewTabPageAdapterTest {
@Test
@Feature({"Ntp"})
public void testSnippetLoadingBlock() {
- NewTabPageAdapter ntpa =
- new NewTabPageAdapter(mNewTabPageManager, null, mSnippetsBridge, null);
-
List<SnippetArticleListItem> snippets = createDummySnippets();
// By default, status is INITIALIZING, so we can load snippets
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(3 + snippets.size(), ntpa.getItemCount());
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(3 + snippets.size(), mNtpAdapter.getItemCount());
// If we have snippets, we should not load the new list.
snippets.add(new SnippetArticleListItem("https://site.com/url1", "title1", "pub1", "txt1",
"https://site.com/url1", "https://amp.site.com/url1", 0, 0, 0));
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(3 + snippets.size() - 1, ntpa.getItemCount());
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(3 + snippets.size() - 1, mNtpAdapter.getItemCount());
// When snippets are disabled, we should not be able to load them
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.SIGNED_OUT);
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(5, ntpa.getItemCount());
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.SIGNED_OUT);
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(5, mNtpAdapter.getItemCount());
// INITIALIZING lets us load snippets still.
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.INITIALIZING);
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(3 + snippets.size(), ntpa.getItemCount());
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.INITIALIZING);
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(3 + snippets.size(), mNtpAdapter.getItemCount());
// The adapter should now be waiting for new snippets.
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.AVAILABLE);
- mSnippetsObserver.onSnippetsReceived(snippets);
- assertEquals(3 + snippets.size(), ntpa.getItemCount());
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.AVAILABLE);
+ mSnippetsSource.setSnippetsForCategory(KnownCategories.ARTICLES, snippets);
+ assertEquals(3 + snippets.size(), mNtpAdapter.getItemCount());
}
/**
@@ -200,30 +230,35 @@ public class NewTabPageAdapterTest {
@Test
@Feature({"Ntp"})
public void testProgressIndicatorDisplay() {
- NewTabPageAdapter ntpa =
- new NewTabPageAdapter(mNewTabPageManager, null, mSnippetsBridge, null);
- int progressPos = ntpa.getBottomSpacerPosition() - 1;
- ProgressListItem progress = (ProgressListItem) ntpa.getItemsForTesting().get(progressPos);
+ int progressPos = mNtpAdapter.getBottomSpacerPosition() - 1;
+ ProgressListItem progress = (ProgressListItem) mNtpAdapter.getItems().get(progressPos);
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.INITIALIZING);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.INITIALIZING);
assertTrue(progress.isVisible());
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.AVAILABLE);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.AVAILABLE);
assertFalse(progress.isVisible());
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.AVAILABLE_LOADING);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.AVAILABLE_LOADING);
assertTrue(progress.isVisible());
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.NOT_PROVIDED);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.NOT_PROVIDED);
assertFalse(progress.isVisible());
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.CATEGORY_EXPLICITLY_DISABLED);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.CATEGORY_EXPLICITLY_DISABLED);
assertFalse(progress.isVisible());
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.SIGNED_OUT);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.SIGNED_OUT);
assertFalse(progress.isVisible());
- mSnippetsObserver.onCategoryStatusChanged(CategoryStatus.LOADING_ERROR);
+ mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
+ CategoryStatus.LOADING_ERROR);
assertFalse(progress.isVisible());
}
« no previous file with comments | « chrome/android/java_sources.gni ('k') | chrome/browser/android/ntp/ntp_snippets_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698