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
private static final int SNACKBAR_DURATION_MS_SHORT = 4000;
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";
public static final String FEEDBACK_CONTEXT = "mobile_browser";
public static final String XSURFACE_CARD_URL = "Card URL";
@VisibleForTesting
static final String FEEDBACK_CONTEXT = "mobile_browser";
@VisibleForTesting
static final String XSURFACE_CARD_URL = "Card URL";
private final long mNativeFeedStreamSurface;
private final FeedListContentManager mContentManager;
......
......@@ -4,10 +4,13 @@
package org.chromium.chrome.browser.feed.v2;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
......@@ -23,7 +26,9 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
......@@ -33,6 +38,7 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.JniMocker;
import org.chromium.chrome.browser.help.HelpAndFeedback;
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.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.xsurface.FeedActionsHandler;
......@@ -45,6 +51,8 @@ import org.chromium.components.feed.proto.FeedUiProto.XSurfaceSlice;
import org.chromium.ui.mojom.WindowOpenDisposition;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/** Unit tests for {@link FeedStreamSurface}. */
@RunWith(BaseRobolectricTestRunner.class)
......@@ -65,6 +73,11 @@ public class FeedStreamSurfaceTest {
private NativePageNavigationDelegate mPageNavigationDelegate;
@Mock
private HelpAndFeedback mHelpAndFeedback;
@Mock
Profile mProfileMock;
@Captor
private ArgumentCaptor<Map<String, String>> mMapCaptor;
@Rule
public JniMocker mocker = new JniMocker();
......@@ -81,6 +94,7 @@ public class FeedStreamSurfaceTest {
MockitoAnnotations.initMocks(this);
mActivity = Robolectric.buildActivity(Activity.class).get();
mocker.mock(FeedStreamSurfaceJni.TEST_HOOKS, mFeedStreamSurfaceJniMock);
Profile.setLastUsedProfileForTesting(mProfileMock);
mFeedStreamSurface = new FeedStreamSurface(mActivity, false, mSnackbarManager,
mPageNavigationDelegate, mBottomSheetController, mHelpAndFeedback);
}
......@@ -402,6 +416,33 @@ public class FeedStreamSurfaceTest {
verify(mPageNavigationDelegate)
.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
@SmallTest
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