Commit 857d1b4e authored by Peter E Conn's avatar Peter E Conn Committed by Commit Bot

🤝 Add Unit tests for TrustedWebActivityDisclosure.

Bug: 871266
Change-Id: I142b570be0a17df00d9b43cf96fddc8c09c21a0d
Reviewed-on: https://chromium-review.googlesource.com/1238463
Commit-Queue: Peter Conn <peconn@chromium.org>
Reviewed-by: default avatarMichael van Ouwerkerk <mvanouwerkerk@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594361}
parent dfd34b91
......@@ -255,4 +255,8 @@ public class Snackbar {
boolean isTypePersistent() {
return mType == TYPE_PERSISTENT;
}
/** So tests can trigger a press on a Snackbar. */
@VisibleForTesting
public Object getActionDataForTesting() { return mActionData; }
}
......@@ -2187,6 +2187,7 @@ chrome_junit_test_java_sources = [
"junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetControllerTest.java",
"junit/src/org/chromium/chrome/browser/background_task_scheduler/NativeBackgroundTaskTest.java",
"junit/src/org/chromium/chrome/browser/browseractions/BrowserActionsIntentTest.java",
"junit/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityDisclosureTest.java",
"junit/src/org/chromium/chrome/browser/compositor/animation/CompositorAnimatorTest.java",
"junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java",
"junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImplTest.java",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.browserservices;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import android.content.res.Resources;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
import org.chromium.chrome.browser.snackbar.Snackbar;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
/**
* Tests for {@link TrustedWebActivityDisclosure}.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class TrustedWebActivityDisclosureTest {
private static final String TWA_PACKAGE = "com.example.twa";
@Mock public Resources mResources;
@Mock public ChromePreferenceManager mPreferences;
@Mock public SnackbarManager mSnackbarManager;
private TrustedWebActivityDisclosure mDisclosure;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
doReturn("any string").when(mResources).getString(anyInt());
doReturn(false).when(mPreferences).hasUserAcceptedTwaDisclosureForPackage(anyString());
mDisclosure = new TrustedWebActivityDisclosure(mResources, mPreferences);
}
@Test
@Feature("TrustedWebActivities")
public void showIsIdempotent() {
mDisclosure.showSnackbarIfNeeded(mSnackbarManager, TWA_PACKAGE);
mDisclosure.showSnackbarIfNeeded(mSnackbarManager, TWA_PACKAGE);
verify(mSnackbarManager).showSnackbar(any());
}
@Test
@Feature("TrustedWebActivities")
public void hideIsIdempotent() {
mDisclosure.showSnackbarIfNeeded(mSnackbarManager, TWA_PACKAGE);
mDisclosure.dismissSnackbarIfNeeded(mSnackbarManager);
mDisclosure.dismissSnackbarIfNeeded(mSnackbarManager);
verify(mSnackbarManager).dismissSnackbars(any());
}
@Test
@Feature("TrustedWebActivities")
public void noShowIfAlreadyAccepted() {
doReturn(true).when(mPreferences).hasUserAcceptedTwaDisclosureForPackage(anyString());
mDisclosure.showSnackbarIfNeeded(mSnackbarManager, TWA_PACKAGE);
verify(mSnackbarManager, times(0)).showSnackbar(any());
}
@Test
@Feature("TrustedWebActivities")
public void recordDismiss() {
ArgumentCaptor<Snackbar> snackbarCaptor = ArgumentCaptor.forClass(Snackbar.class);
mDisclosure.showSnackbarIfNeeded(mSnackbarManager, TWA_PACKAGE);
verify(mSnackbarManager).showSnackbar(snackbarCaptor.capture());
// Dismiss the Snackbar.
// TODO(peconn): Refactor Snackbar to make this a bit cleaner.
snackbarCaptor.getValue().getController().onAction(
snackbarCaptor.getValue().getActionDataForTesting());
verify(mPreferences).setUserAcceptedTwaDisclosureForPackage(TWA_PACKAGE);
}
@Test
@Feature("TrustedWebActivities")
public void doNothingOnNoSnackbarAction() {
ArgumentCaptor<Snackbar> snackbarCaptor = ArgumentCaptor.forClass(Snackbar.class);
mDisclosure.showSnackbarIfNeeded(mSnackbarManager, TWA_PACKAGE);
verify(mSnackbarManager).showSnackbar(snackbarCaptor.capture());
// Dismiss the Snackbar.
// TODO(peconn): Refactor Snackbar to make this a bit cleaner.
snackbarCaptor.getValue().getController().onDismissNoAction(
snackbarCaptor.getValue().getActionDataForTesting());
verify(mPreferences, times(0)).setUserAcceptedTwaDisclosureForPackage(anyString());
}
}
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