Commit 4d87f5b2 authored by Pete Williamson's avatar Pete Williamson Committed by Commit Bot

A test for SendFeedback using a mock profile.

This is attempting to mock out the profile that we get from
getLastUsedRegularProfile.

Change-Id: Icf3cbd3931c146e8ebeb6a46e0033101112789ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2290759
Commit-Queue: Peter Williamson <petewil@chromium.org>
Reviewed-by: default avatarDan H <harringtond@chromium.org>
Cr-Commit-Position: refs/heads/master@{#787927}
parent 9b35cbb8
...@@ -73,10 +73,13 @@ public class FeedStreamSurface implements SurfaceActionsHandler, FeedActionsHand ...@@ -73,10 +73,13 @@ public class FeedStreamSurface implements SurfaceActionsHandler, FeedActionsHand
private static final int SNACKBAR_DURATION_MS_SHORT = 4000; private static final int SNACKBAR_DURATION_MS_SHORT = 4000;
private static final int SNACKBAR_DURATION_MS_LONG = 10000; private static final int SNACKBAR_DURATION_MS_LONG = 10000;
private static final String FEEDBACK_REPORT_TYPE = @VisibleForTesting
static final String FEEDBACK_REPORT_TYPE =
"com.google.chrome.feed.USER_INITIATED_FEEDBACK_REPORT"; "com.google.chrome.feed.USER_INITIATED_FEEDBACK_REPORT";
public static final String FEEDBACK_CONTEXT = "mobile_browser"; @VisibleForTesting
public static final String XSURFACE_CARD_URL = "Card URL"; static final String FEEDBACK_CONTEXT = "mobile_browser";
@VisibleForTesting
static final String XSURFACE_CARD_URL = "Card URL";
private final long mNativeFeedStreamSurface; private final long mNativeFeedStreamSurface;
private final FeedListContentManager mContentManager; private final FeedListContentManager mContentManager;
......
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
package org.chromium.chrome.browser.feed.v2; package org.chromium.chrome.browser.feed.v2;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.any; import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
...@@ -23,7 +26,9 @@ import org.junit.Rule; ...@@ -23,7 +26,9 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers; import org.mockito.ArgumentMatchers;
import org.mockito.Captor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
...@@ -33,6 +38,7 @@ import org.chromium.base.test.BaseRobolectricTestRunner; ...@@ -33,6 +38,7 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.JniMocker; import org.chromium.base.test.util.JniMocker;
import org.chromium.chrome.browser.help.HelpAndFeedback; import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.native_page.NativePageNavigationDelegate; import org.chromium.chrome.browser.native_page.NativePageNavigationDelegate;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.MockTab; import org.chromium.chrome.browser.tab.MockTab;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.xsurface.FeedActionsHandler; import org.chromium.chrome.browser.xsurface.FeedActionsHandler;
...@@ -45,6 +51,8 @@ import org.chromium.components.feed.proto.FeedUiProto.XSurfaceSlice; ...@@ -45,6 +51,8 @@ import org.chromium.components.feed.proto.FeedUiProto.XSurfaceSlice;
import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.ui.mojom.WindowOpenDisposition;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/** Unit tests for {@link FeedStreamSurface}. */ /** Unit tests for {@link FeedStreamSurface}. */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
...@@ -65,6 +73,11 @@ public class FeedStreamSurfaceTest { ...@@ -65,6 +73,11 @@ public class FeedStreamSurfaceTest {
private NativePageNavigationDelegate mPageNavigationDelegate; private NativePageNavigationDelegate mPageNavigationDelegate;
@Mock @Mock
private HelpAndFeedback mHelpAndFeedback; private HelpAndFeedback mHelpAndFeedback;
@Mock
Profile mProfileMock;
@Captor
private ArgumentCaptor<Map<String, String>> mMapCaptor;
@Rule @Rule
public JniMocker mocker = new JniMocker(); public JniMocker mocker = new JniMocker();
...@@ -81,6 +94,7 @@ public class FeedStreamSurfaceTest { ...@@ -81,6 +94,7 @@ public class FeedStreamSurfaceTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mActivity = Robolectric.buildActivity(Activity.class).get(); mActivity = Robolectric.buildActivity(Activity.class).get();
mocker.mock(FeedStreamSurfaceJni.TEST_HOOKS, mFeedStreamSurfaceJniMock); mocker.mock(FeedStreamSurfaceJni.TEST_HOOKS, mFeedStreamSurfaceJniMock);
Profile.setLastUsedProfileForTesting(mProfileMock);
mFeedStreamSurface = new FeedStreamSurface(mActivity, false, mSnackbarManager, mFeedStreamSurface = new FeedStreamSurface(mActivity, false, mSnackbarManager,
mPageNavigationDelegate, mBottomSheetController, mHelpAndFeedback); mPageNavigationDelegate, mBottomSheetController, mHelpAndFeedback);
} }
...@@ -402,6 +416,33 @@ public class FeedStreamSurfaceTest { ...@@ -402,6 +416,33 @@ public class FeedStreamSurfaceTest {
verify(mPageNavigationDelegate) verify(mPageNavigationDelegate)
.openUrl(ArgumentMatchers.eq(WindowOpenDisposition.OFF_THE_RECORD), any()); .openUrl(ArgumentMatchers.eq(WindowOpenDisposition.OFF_THE_RECORD), any());
} }
@Test
@SmallTest
public void testSendFeedback() {
final String testUrl = "https://www.chromium.org";
final String testTitle = "Chromium based browsers for the win!";
final String xSurfaceCardTitle = "Card Title";
final String cardTitle = "CardTitle";
final String cardUrl = "CardUrl";
// Arrange.
Map<String, String> productSpecificDataMap = new HashMap<>();
productSpecificDataMap.put(FeedStreamSurface.XSURFACE_CARD_URL, testUrl);
productSpecificDataMap.put(xSurfaceCardTitle, testTitle);
// Act.
mFeedStreamSurface.sendFeedback(productSpecificDataMap);
// Assert.
verify(mHelpAndFeedback)
.showFeedback(any(), any(), eq(testUrl), eq(FeedStreamSurface.FEEDBACK_REPORT_TYPE),
mMapCaptor.capture(), eq(FeedStreamSurface.FEEDBACK_CONTEXT));
// Check that the map contents are as expected.
assertThat(mMapCaptor.getValue()).containsEntry(cardUrl, testUrl);
assertThat(mMapCaptor.getValue()).containsEntry(cardTitle, testTitle);
}
@Test @Test
@SmallTest @SmallTest
public void testShowSnackbar() { public void testShowSnackbar() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment