Commit bc70ea1c authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Add tests for ChromeBasePreference

Add tests around the display of preferences managed by policy
(administrator) and custodians (parent(s)).

Bug: 1044401
Change-Id: I6176b9c89ab218a50f06fa611507e057377d5cce
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2130676Reviewed-by: default avatarBrandon Wylie <wylieb@chromium.org>
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#755170}
parent ef1ef34d
...@@ -16,6 +16,7 @@ android_library("javatests") { ...@@ -16,6 +16,7 @@ android_library("javatests") {
testonly = true testonly = true
sources = [ sources = [
"android/java/src/org/chromium/chrome/browser/settings/ChromeBasePreferenceTest.java",
"android/java/src/org/chromium/chrome/browser/settings/DummySettingsForTest.java", "android/java/src/org/chromium/chrome/browser/settings/DummySettingsForTest.java",
"android/java/src/org/chromium/chrome/browser/settings/ManagedPreferencesUtilsTest.java", "android/java/src/org/chromium/chrome/browser/settings/ManagedPreferencesUtilsTest.java",
] ]
......
// Copyright 2020 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.settings;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.stringContainsInOrder;
import android.content.Context;
import android.content.Intent;
import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.ViewInteraction;
import android.support.test.rule.ActivityTestRule;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import androidx.test.filters.SmallTest;
import com.google.common.collect.ImmutableList;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.components.browser_ui.settings.ChromeBasePreference;
import org.chromium.components.browser_ui.settings.R;
import java.util.List;
/**
* Tests of {@link ChromeBasePreference}.
*
* TODO(chouinard): Once SettingsLauncher and SettingsActivity have compontentized interfaces, these
* test should be moved to //components/browser_ui/settings/.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
public class ChromeBasePreferenceTest {
@Rule
public ActivityTestRule<SettingsActivity> mRule =
new ActivityTestRule<>(SettingsActivity.class);
private PreferenceScreen mPreferenceScreen;
private Context mContext;
private static final String TITLE = "Preference Title";
private static final String SUMMARY = "This is a summary.";
@Before
public void setUp() {
Intent intent = SettingsLauncher.getInstance().createIntentForSettingsPage(
InstrumentationRegistry.getInstrumentation().getContext(),
DummySettingsForTest.class.getName());
mRule.launchActivity(intent);
PreferenceFragmentCompat fragment =
(PreferenceFragmentCompat) mRule.getActivity().getMainFragment();
mPreferenceScreen = fragment.getPreferenceScreen();
mContext = fragment.getPreferenceManager().getContext();
}
@Test
@SmallTest
public void testUnmanagedPreference() {
ChromeBasePreference preference = new ChromeBasePreference(mContext);
preference.setTitle(TITLE);
preference.setSummary(SUMMARY);
preference.setManagedPreferenceDelegate(ManagedPreferencesUtilsTest.UNMANAGED_DELEGATE);
mPreferenceScreen.addPreference(preference);
Assert.assertTrue(preference.isEnabled());
getTitleView().check(matches(allOf(withText(TITLE), isDisplayed())));
getSummaryView().check(matches(allOf(withText(SUMMARY), isDisplayed())));
getIconView().check(matches(not(isDisplayed())));
}
@Test
@SmallTest
public void testPolicyManagedPreferenceWithoutSummary() {
ChromeBasePreference preference = new ChromeBasePreference(mContext);
preference.setTitle(TITLE);
preference.setManagedPreferenceDelegate(ManagedPreferencesUtilsTest.POLICY_DELEGATE);
mPreferenceScreen.addPreference(preference);
Assert.assertFalse(preference.isEnabled());
getTitleView().check(matches(allOf(withText(TITLE), isDisplayed())));
getSummaryView().check(
matches(allOf(withText(R.string.managed_by_your_organization), isDisplayed())));
getIconView().check(matches(isDisplayed()));
}
@Test
@SmallTest
public void testPolicyManagedPreferenceWithSummary() {
ChromeBasePreference preference = new ChromeBasePreference(mContext);
preference.setTitle(TITLE);
preference.setSummary(SUMMARY);
preference.setManagedPreferenceDelegate(ManagedPreferencesUtilsTest.POLICY_DELEGATE);
mPreferenceScreen.addPreference(preference);
List<String> expectedSummaryContains = ImmutableList.of(
SUMMARY, mContext.getString(R.string.managed_by_your_organization));
Assert.assertFalse(preference.isEnabled());
getTitleView().check(matches(allOf(withText(TITLE), isDisplayed())));
getSummaryView().check(matches(
allOf(withText(stringContainsInOrder(expectedSummaryContains)), isDisplayed())));
getIconView().check(matches(isDisplayed()));
}
@Test
@SmallTest
public void testSingleCustodianManagedPreference() {
ChromeBasePreference preference = new ChromeBasePreference(mContext);
preference.setTitle(TITLE);
preference.setManagedPreferenceDelegate(
ManagedPreferencesUtilsTest.SINGLE_CUSTODIAN_DELEGATE);
mPreferenceScreen.addPreference(preference);
Assert.assertFalse(preference.isEnabled());
getTitleView().check(matches(allOf(withText(TITLE), isDisplayed())));
getSummaryView().check(
matches(allOf(withText(R.string.managed_by_your_parent), isDisplayed())));
getIconView().check(matches(isDisplayed()));
}
@Test
@SmallTest
public void testMultipleCustodianManagedPreference() {
ChromeBasePreference preference = new ChromeBasePreference(mContext);
preference.setTitle(TITLE);
preference.setManagedPreferenceDelegate(
ManagedPreferencesUtilsTest.MULTI_CUSTODIAN_DELEGATE);
mPreferenceScreen.addPreference(preference);
Assert.assertFalse(preference.isEnabled());
getTitleView().check(matches(allOf(withText(TITLE), isDisplayed())));
getSummaryView().check(
matches(allOf(withText(R.string.managed_by_your_parents), isDisplayed())));
getIconView().check(matches(isDisplayed()));
}
private ViewInteraction getTitleView() {
return onView(withId(android.R.id.title));
}
private ViewInteraction getSummaryView() {
return onView(withId(android.R.id.summary));
}
private ViewInteraction getIconView() {
return onView(withId(android.R.id.icon));
}
}
...@@ -44,6 +44,78 @@ public class ManagedPreferencesUtilsTest { ...@@ -44,6 +44,78 @@ public class ManagedPreferencesUtilsTest {
public ActivityTestRule<SettingsActivity> mRule = public ActivityTestRule<SettingsActivity> mRule =
new ActivityTestRule<>(SettingsActivity.class); new ActivityTestRule<>(SettingsActivity.class);
public static final ManagedPreferenceDelegate UNMANAGED_DELEGATE =
new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return false;
}
@Override
public boolean isPreferenceControlledByCustodian(Preference preference) {
return false;
}
@Override
public boolean doesProfileHaveMultipleCustodians() {
return false;
}
};
public static final ManagedPreferenceDelegate POLICY_DELEGATE =
new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return true;
}
@Override
public boolean isPreferenceControlledByCustodian(Preference preference) {
return false;
}
@Override
public boolean doesProfileHaveMultipleCustodians() {
return false;
}
};
public static final ManagedPreferenceDelegate SINGLE_CUSTODIAN_DELEGATE =
new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return false;
}
@Override
public boolean isPreferenceControlledByCustodian(Preference preference) {
return true;
}
@Override
public boolean doesProfileHaveMultipleCustodians() {
return false;
}
};
public static final ManagedPreferenceDelegate MULTI_CUSTODIAN_DELEGATE =
new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return false;
}
@Override
public boolean isPreferenceControlledByCustodian(Preference preference) {
return true;
}
@Override
public boolean doesProfileHaveMultipleCustodians() {
return true;
}
};
@Before @Before
public void setUp() { public void setUp() {
Context context = InstrumentationRegistry.getInstrumentation().getContext(); Context context = InstrumentationRegistry.getInstrumentation().getContext();
...@@ -79,26 +151,9 @@ public class ManagedPreferencesUtilsTest { ...@@ -79,26 +151,9 @@ public class ManagedPreferencesUtilsTest {
@Test @Test
@SmallTest @SmallTest
public void testShowManagedByParentToastSingleCustodian() { public void testShowManagedByParentToastSingleCustodian() {
ManagedPreferenceDelegate singleCustodianDelegate = new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return false;
}
@Override
public boolean isPreferenceControlledByCustodian(Preference preference) {
return true;
}
@Override
public boolean doesProfileHaveMultipleCustodians() {
return false;
}
};
TestThreadUtils.runOnUiThreadBlocking(() -> { TestThreadUtils.runOnUiThreadBlocking(() -> {
ManagedPreferencesUtils.showManagedByParentToast( ManagedPreferencesUtils.showManagedByParentToast(
mRule.getActivity(), singleCustodianDelegate); mRule.getActivity(), SINGLE_CUSTODIAN_DELEGATE);
}); });
onView(withText(R.string.managed_by_your_parent)) onView(withText(R.string.managed_by_your_parent))
...@@ -109,26 +164,9 @@ public class ManagedPreferencesUtilsTest { ...@@ -109,26 +164,9 @@ public class ManagedPreferencesUtilsTest {
@Test @Test
@SmallTest @SmallTest
public void testShowManagedByParentToastMultipleCustodians() { public void testShowManagedByParentToastMultipleCustodians() {
ManagedPreferenceDelegate multiCustodianDelegate = new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
return false;
}
@Override
public boolean isPreferenceControlledByCustodian(Preference preference) {
return true;
}
@Override
public boolean doesProfileHaveMultipleCustodians() {
return true;
}
};
TestThreadUtils.runOnUiThreadBlocking(() -> { TestThreadUtils.runOnUiThreadBlocking(() -> {
ManagedPreferencesUtils.showManagedByParentToast( ManagedPreferencesUtils.showManagedByParentToast(
mRule.getActivity(), multiCustodianDelegate); mRule.getActivity(), MULTI_CUSTODIAN_DELEGATE);
}); });
onView(withText(R.string.managed_by_your_parents)) onView(withText(R.string.managed_by_your_parents))
......
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