1 package org.robolectric.shadows; 2 3 import static com.google.common.truth.Truth.assertThat; 4 5 import android.content.ContentProvider; 6 import android.content.ContentProviderOperation; 7 import android.content.ContentProviderOperation.Builder; 8 import android.content.ContentValues; 9 import android.database.Cursor; 10 import android.net.Uri; 11 import androidx.test.ext.junit.runners.AndroidJUnit4; 12 import org.junit.Test; 13 import org.junit.runner.RunWith; 14 15 @RunWith(AndroidJUnit4.class) 16 public class ShadowContentProviderOperationBuilderTest { 17 private Builder builder; 18 19 @Test 20 public void build() throws Exception { 21 Uri uri = Uri.parse("content://authority/path"); 22 23 builder = ContentProviderOperation.newUpdate(uri); 24 builder.withSelection("a=?", new String[] {"a"}); 25 builder.withValue("k1", "v1"); 26 ContentValues cv = new ContentValues(); 27 cv.put("k2", "v2"); 28 builder.withValues(cv); 29 ContentProviderOperation op = builder.build(); 30 31 assertThat(op).isNotNull(); 32 assertThat(op.getUri()).isEqualTo(uri); 33 34 final ContentRequest request = new ContentRequest(); 35 ContentProvider provider = new ContentProvider() { 36 @Override 37 public boolean onCreate() { 38 return true; 39 } 40 41 @Override 42 public Cursor query(Uri uri, String[] projection, String selection, 43 String[] selectionArgs, String sortOrder) { 44 return null; 45 } 46 47 @Override 48 public String getType(Uri uri) { 49 return null; 50 } 51 52 @Override 53 public Uri insert(Uri uri, ContentValues values) { 54 return null; 55 } 56 57 @Override 58 public int delete(Uri uri, String selection, String[] selectionArgs) { 59 return 0; 60 } 61 62 @Override 63 public int update(Uri uri, ContentValues values, String selection, 64 String[] selectionArgs) { 65 request.uri = uri; 66 request.values = values; 67 request.selection = selection; 68 request.selectionArgs = selectionArgs; 69 return 0; 70 } 71 72 }; 73 74 op.apply(provider, null, 0); 75 76 assertThat(request.uri).isEqualTo(uri); 77 assertThat(request.selection).isEqualTo("a=?"); 78 assertThat(request.selectionArgs).isEqualTo(new String[] {"a"}); 79 80 assertThat(request.values.containsKey("k1")).isTrue(); 81 assertThat(request.values.containsKey("k2")).isTrue(); 82 83 } 84 85 static class ContentRequest { 86 Uri uri; 87 String selection; 88 String[] selectionArgs; 89 ContentValues values; 90 } 91 92 }