Setup AccessibilityButtonFragment test infrastructure

Bug: 197695932
Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityButtonFragmentTest
Change-Id: I773579c8f2dcb0f8ebf154b584f8618f2ec1968b
This commit is contained in:
menghanli
2022-06-23 06:42:43 +08:00
parent 652e9ef651
commit bf91f212b8

View File

@@ -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;
}
}
}