/** * Create and register {@link ContentProvider} using the given {@link ProviderInfo}. * * @param providerInfo the {@link ProviderInfo} to use * @return this {@link ContentProviderController} */ public ContentProviderController<T> create(ProviderInfo providerInfo) { Context baseContext = RuntimeEnvironment.application.getBaseContext(); // make sure the component is enabled ComponentName componentName = createRelative(baseContext.getPackageName(), contentProvider.getClass().getName()); baseContext .getPackageManager() .setComponentEnabledSetting( componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); contentProvider.attachInfo(baseContext, providerInfo); if (providerInfo != null) { ShadowContentResolver.registerProviderInternal(providerInfo.authority, contentProvider); } return this; }
@Before public void setUp() { initMocks(this); ShadowContentResolver.registerProviderInternal(AUTHORITY, provider); }
@Test public void call_shouldCallProvider() { final String METHOD = "method"; final String ARG = "arg"; final Bundle EXTRAS = new Bundle(); final Uri uri = Uri.parse("content://" + AUTHORITY); ContentProvider provider = mock(ContentProvider.class); doReturn(null).when(provider).call(METHOD, ARG, EXTRAS); ShadowContentResolver.registerProviderInternal(AUTHORITY, provider); contentResolver.call(uri, METHOD, ARG, EXTRAS); verify(provider).call(METHOD, ARG, EXTRAS); }
@Test public void acquireUnstableProvider_shouldReturnWithUri() { ContentProvider cp = mock(ContentProvider.class); ShadowContentResolver.registerProviderInternal(AUTHORITY, cp); final Uri uri = Uri.parse("content://" + AUTHORITY); assertThat(contentResolver.acquireUnstableProvider(uri)).isSameAs(cp.getIContentProvider()); }
@Test public void acquireUnstableProvider_shouldReturnWithString() { ContentProvider cp = mock(ContentProvider.class); ShadowContentResolver.registerProviderInternal(AUTHORITY, cp); assertThat(contentResolver.acquireUnstableProvider(AUTHORITY)).isSameAs(cp.getIContentProvider()); }
@Test public void getType_shouldReturnProviderValue() { ShadowContentResolver.registerProviderInternal(AUTHORITY, new ContentProvider() { @Override public boolean onCreate() { return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { return new BaseCursor(); } @Override public Uri insert(Uri uri, ContentValues values) { return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return -1; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return -1; } @Override public String getType(Uri uri) { return "mytype"; } }); final Uri uri = Uri.parse("content://"+AUTHORITY+"/some/path"); assertThat(contentResolver.getType(uri)).isEqualTo("mytype"); }
@Test public void shouldDelegateCallsToRegisteredProvider() { ShadowContentResolver.registerProviderInternal(AUTHORITY, new ContentProvider() { @Override public boolean onCreate() {
public void applyBatchForRegisteredProvider() throws RemoteException, OperationApplicationException { final List<String> operations = new ArrayList<>(); ShadowContentResolver.registerProviderInternal("registeredProvider", new ContentProvider() { @Override public boolean onCreate() {
/** * Create and register {@link ContentProvider} using the given {@link ProviderInfo}. * * @param providerInfo the {@link ProviderInfo} to use * @return this {@link ContentProviderController} */ public ContentProviderController<T> create(ProviderInfo providerInfo) { Context baseContext = RuntimeEnvironment.application.getBaseContext(); // make sure the component is enabled ComponentName componentName = createRelative(baseContext.getPackageName(), contentProvider.getClass().getName()); baseContext .getPackageManager() .setComponentEnabledSetting( componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); contentProvider.attachInfo(baseContext, providerInfo); if (providerInfo != null) { ShadowContentResolver.registerProviderInternal(providerInfo.authority, contentProvider); } return this; }