package org.robolectric.shadows; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.TestRunners; import android.content.ContentProvider; import android.content.ContentProviderOperation; import android.content.ContentProviderOperation.Builder; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; @RunWith(TestRunners.MultiApiSelfTest.class) public class ShadowContentProviderOperationBuilderTest { private Builder builder; @Test public void build() throws Exception { Uri uri = Uri.parse("content://authority/path"); builder = ContentProviderOperation.newUpdate(uri); builder.withSelection("a=?", new String[] {"a"}); builder.withValue("k1", "v1"); ContentValues cv = new ContentValues(); cv.put("k2", "v2"); builder.withValues(cv); ContentProviderOperation op = builder.build(); assertThat(op).isNotNull(); assertThat(op.getUri()).isEqualTo(uri); final ContentRequest request = new ContentRequest(); ContentProvider provider = new ContentProvider() { @Override public boolean onCreate() { return true; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { return null; } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { request.uri = uri; request.values = values; request.selection = selection; request.selectionArgs = selectionArgs; return 0; } }; op.apply(provider, null, 0); assertThat(request.uri).isEqualTo(uri); assertThat(request.selection).isEqualTo("a=?"); assertThat(request.selectionArgs).isEqualTo(new String[] {"a"}); assertThat(request.values.containsKey("k1")).isTrue(); assertThat(request.values.containsKey("k2")).isTrue(); } static class ContentRequest { Uri uri; String selection; String[] selectionArgs; ContentValues values; } }