Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf91f212 authored by menghanli's avatar menghanli
Browse files

Setup AccessibilityButtonFragment test infrastructure

Bug: 197695932
Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityButtonFragmentTest
Change-Id: I773579c8f2dcb0f8ebf154b584f8618f2ec1968b
parent 652e9ef6
Loading
Loading
Loading
Loading
+91 −1
Original line number Diff line number Diff line
@@ -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 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;
        }
    }
}