| package com.android.settings.search; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.spy; |
| |
| import android.Manifest; |
| import android.content.pm.ProviderInfo; |
| import android.database.Cursor; |
| import android.net.Uri; |
| import android.provider.SearchIndexablesContract; |
| |
| import com.android.settings.R; |
| import com.android.settings.search.indexing.FakeSettingsFragment; |
| import com.android.settings.testutils.FakeFeatureFactory; |
| import com.android.settings.testutils.SettingsRobolectricTestRunner; |
| |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.robolectric.RuntimeEnvironment; |
| import org.robolectric.annotation.Config; |
| |
| @RunWith(SettingsRobolectricTestRunner.class) |
| public class SettingsSearchIndexablesProviderTest { |
| |
| private static final String BASE_AUTHORITY = "com.android.settings"; |
| |
| private SettingsSearchIndexablesProvider mProvider; |
| private FakeFeatureFactory mFakeFeatureFactory; |
| |
| @Before |
| public void setUp() { |
| mProvider = spy(new SettingsSearchIndexablesProvider()); |
| ProviderInfo info = new ProviderInfo(); |
| info.exported = true; |
| info.grantUriPermissions = true; |
| info.authority = BASE_AUTHORITY; |
| info.readPermission = Manifest.permission.READ_SEARCH_INDEXABLES; |
| mProvider.attachInfo(RuntimeEnvironment.application, info); |
| |
| final SearchFeatureProvider featureProvider = new SearchFeatureProviderImpl(); |
| featureProvider.getSearchIndexableResources().getProviderValues().clear(); |
| featureProvider.getSearchIndexableResources().getProviderValues() |
| .add(FakeSettingsFragment.class); |
| mFakeFeatureFactory = FakeFeatureFactory.setupForTest(); |
| mFakeFeatureFactory.searchFeatureProvider = featureProvider; |
| } |
| |
| @After |
| public void cleanUp() { |
| mFakeFeatureFactory.searchFeatureProvider = mock(SearchFeatureProvider.class); |
| } |
| |
| @Test |
| public void testRawColumnFetched() { |
| Uri rawUri = Uri.parse("content://" + BASE_AUTHORITY + "/" + |
| SearchIndexablesContract.INDEXABLES_RAW_PATH); |
| |
| final Cursor cursor = mProvider.query(rawUri, |
| SearchIndexablesContract.INDEXABLES_RAW_COLUMNS, null, null, null); |
| |
| cursor.moveToFirst(); |
| assertThat(cursor.getString(1)).isEqualTo(FakeSettingsFragment.TITLE); |
| assertThat(cursor.getString(2)).isEqualTo(FakeSettingsFragment.SUMMARY_ON); |
| assertThat(cursor.getString(3)).isEqualTo(FakeSettingsFragment.SUMMARY_OFF); |
| assertThat(cursor.getString(4)).isEqualTo(FakeSettingsFragment.ENTRIES); |
| assertThat(cursor.getString(5)).isEqualTo(FakeSettingsFragment.KEYWORDS); |
| assertThat(cursor.getString(6)).isEqualTo(FakeSettingsFragment.SCREEN_TITLE); |
| assertThat(cursor.getString(7)).isEqualTo(FakeSettingsFragment.CLASS_NAME); |
| assertThat(cursor.getInt(8)).isEqualTo(FakeSettingsFragment.ICON); |
| assertThat(cursor.getString(9)).isEqualTo(FakeSettingsFragment.INTENT_ACTION); |
| assertThat(cursor.getString(10)).isEqualTo(FakeSettingsFragment.TARGET_PACKAGE); |
| assertThat(cursor.getString(11)).isEqualTo(FakeSettingsFragment.TARGET_CLASS); |
| assertThat(cursor.getString(12)).isEqualTo(FakeSettingsFragment.KEY); |
| } |
| |
| @Test |
| public void testResourcesColumnFetched() { |
| Uri rawUri = Uri.parse("content://" + BASE_AUTHORITY + "/" + |
| SearchIndexablesContract.INDEXABLES_XML_RES_PATH); |
| |
| final Cursor cursor = mProvider.query(rawUri, |
| SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS, null, null, null); |
| |
| cursor.moveToFirst(); |
| assertThat(cursor.getCount()).isEqualTo(1); |
| assertThat(cursor.getInt(1)).isEqualTo(R.xml.display_settings); |
| assertThat(cursor.getString(2)).isEqualTo(FakeSettingsFragment.CLASS_NAME); |
| assertThat(cursor.getInt(3)).isEqualTo(0); |
| assertThat(cursor.getString(4)).isNull(); |
| assertThat(cursor.getString(5)).isNull(); |
| assertThat(cursor.getString(6)).isNull(); |
| } |
| |
| @Test |
| @Config(qualifiers = "mcc999") |
| public void testNonIndexablesColumnFetched() { |
| Uri rawUri = Uri.parse("content://" + BASE_AUTHORITY + "/" + |
| SearchIndexablesContract.NON_INDEXABLES_KEYS_PATH); |
| |
| final Cursor cursor = mProvider.query(rawUri, |
| SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS, null, null, null); |
| |
| cursor.moveToFirst(); |
| assertThat(cursor.getCount()).isEqualTo(2); |
| assertThat(cursor.getString(0)).isEqualTo("pref_key_1"); |
| cursor.moveToNext(); |
| assertThat(cursor.getString(0)).isEqualTo("pref_key_3"); |
| } |
| } |