package com.getbase.android.db.provider;
import static com.google.common.truth.Truth.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowContentProviderOperation;
import android.content.ContentProviderOperation;
import android.content.ContentValues;
import android.net.Uri;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class ConvertToContentProviderOperationTest {
@Test
public void shouldConstructInsertOperation() throws Exception {
ContentValues values = new ContentValues();
values.put("key", "value");
values.put("second", 2L);
final ContentProviderOperation operation = ProviderAction.insert(createFakeUri("endpoint"))
.values(values)
.toContentProviderOperation(Utils.DUMMY_URI_DECORATOR);
final ShadowContentProviderOperation shadowOperation = Robolectric.shadowOf(operation);
assertThat(operation.getUri()).isEqualTo(createFakeUri("endpoint"));
assertThat(shadowOperation.getType()).isEqualTo(ShadowContentProviderOperation.TYPE_INSERT);
assertThat(shadowOperation.getContentValues()).isEqualTo(values);
}
@Test
public void shouldConstructUpdateOperation() throws Exception {
final ContentProviderOperation operation = ProviderAction.update(createFakeUri("endpoint"))
.value("key", "value")
.where("key=?", "hello")
.toContentProviderOperation(Utils.DUMMY_URI_DECORATOR);
final ShadowContentProviderOperation shadowOperation = Robolectric.shadowOf(operation);
assertThat(operation.getUri()).isEqualTo(createFakeUri("endpoint"));
assertThat(shadowOperation.getType()).isEqualTo(ShadowContentProviderOperation.TYPE_UPDATE);
assertThat(shadowOperation.getSelection()).isEqualTo("(key=?)");
assertThat(shadowOperation.getSelectionArgs()).isEqualTo(new String[] { "hello" });
}
@Test
public void shouldConstructDeleteOperation() throws Exception {
final ContentProviderOperation operation = ProviderAction.delete(createFakeUri("endpoint"))
.where("key=?", "hello")
.toContentProviderOperation(Utils.DUMMY_URI_DECORATOR);
final ShadowContentProviderOperation shadowOperation = Robolectric.shadowOf(operation);
assertThat(operation.getUri()).isEqualTo(createFakeUri("endpoint"));
assertThat(shadowOperation.getType()).isEqualTo(ShadowContentProviderOperation.TYPE_DELETE);
assertThat(shadowOperation.getSelection()).isEqualTo("(key=?)");
assertThat(shadowOperation.getSelectionArgs()).isEqualTo(new String[] { "hello" });
}
private static Uri createFakeUri(String suffix) {
return Uri.parse("content://com.fakedomain.base")
.buildUpon()
.appendPath(suffix)
.build();
}
}