From bf91f212b82ef5b6919b3e14be4d7059a21bfa0a Mon Sep 17 00:00:00 2001 From: menghanli Date: Thu, 23 Jun 2022 06:42:43 +0800 Subject: [PATCH] Setup AccessibilityButtonFragment test infrastructure Bug: 197695932 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityButtonFragmentTest Change-Id: I773579c8f2dcb0f8ebf154b584f8618f2ec1968b --- .../AccessibilityButtonFragmentTest.java | 94 ++++++++++++++++++- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFragmentTest.java index 473b56687bf..e34767e7d0b 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFragmentTest.java @@ -16,26 +16,83 @@ package com.android.settings.accessibility; +import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON; +import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; + import static com.google.common.truth.Truth.assertThat; -import android.content.Context; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; +import android.content.Context; +import android.content.res.Resources; +import android.os.Bundle; + +import androidx.fragment.app.FragmentActivity; +import androidx.preference.PreferenceManager; +import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.testutils.XmlTestUtils; +import com.android.settings.testutils.shadow.ShadowFragment; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Spy; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import java.util.List; /** Tests for {@link AccessibilityButtonFragment}. */ +@Config(shadows = ShadowFragment.class) @RunWith(RobolectricTestRunner.class) public class AccessibilityButtonFragmentTest { - private Context mContext = ApplicationProvider.getApplicationContext(); + @Rule + public MockitoRule mMockitoRule = MockitoJUnit.rule(); + @Spy + private final Context mContext = ApplicationProvider.getApplicationContext(); + @Spy + private Resources mResources = spy(mContext.getResources()); + private AccessibilityButtonFragment mFragment; + + @Before + public void setUp() { + mFragment = spy(new TestAccessibilityButtonFragment(mContext)); + when(mFragment.getResources()).thenReturn(mResources); + when(mFragment.getActivity()).thenReturn(Robolectric.setupActivity(FragmentActivity.class)); + } + + @Test + public void onCreate_navigationGestureEnabled_setCorrectTitle() { + when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode)) + .thenReturn(NAV_BAR_MODE_GESTURAL); + + mFragment.onAttach(mContext); + mFragment.onCreate(Bundle.EMPTY); + + assertThat(mFragment.getActivity().getTitle().toString()).isEqualTo( + mContext.getString(R.string.accessibility_button_gesture_title)); + } + + @Test + public void onCreate_navigationGestureDisabled_setCorrectTitle() { + when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode)) + .thenReturn(NAV_BAR_MODE_2BUTTON); + + mFragment.onAttach(mContext); + mFragment.onCreate(Bundle.EMPTY); + + assertThat(mFragment.getActivity().getTitle().toString()).isEqualTo( + mContext.getString(R.string.accessibility_button_title)); + } @Test public void getNonIndexableKeys_existInXmlLayout() { @@ -47,4 +104,37 @@ public class AccessibilityButtonFragmentTest { assertThat(keys).containsAtLeastElementsIn(niks); } + + private static class TestAccessibilityButtonFragment extends AccessibilityButtonFragment { + + private final Context mContext; + private final PreferenceManager mPreferenceManager; + + TestAccessibilityButtonFragment(Context context) { + super(); + mContext = context; + mPreferenceManager = new PreferenceManager(context); + mPreferenceManager.setPreferences(mPreferenceManager.createPreferenceScreen(context)); + } + + @Override + public int getPreferenceScreenResId() { + return R.xml.placeholder_prefs; + } + + @Override + public PreferenceScreen getPreferenceScreen() { + return mPreferenceManager.getPreferenceScreen(); + } + + @Override + public PreferenceManager getPreferenceManager() { + return mPreferenceManager; + } + + @Override + public Context getContext() { + return mContext; + } + } }