From 07d00fa7535566d401ad4cf5002af626f907a514 Mon Sep 17 00:00:00 2001 From: George Mount Date: Thu, 7 Mar 2013 09:02:26 -0800 Subject: Add batch operations to PhotoProvider Change-Id: I36b2f0305e2ef7502df7b896c8baedc86519ac52 --- .../com/android/photos/data/PhotoProviderTest.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'tests/src/com') diff --git a/tests/src/com/android/photos/data/PhotoProviderTest.java b/tests/src/com/android/photos/data/PhotoProviderTest.java index 47c6e86b2..39abff441 100644 --- a/tests/src/com/android/photos/data/PhotoProviderTest.java +++ b/tests/src/com/android/photos/data/PhotoProviderTest.java @@ -15,13 +15,16 @@ */ package com.android.photos.data; +import android.content.ContentProviderOperation; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; +import android.content.OperationApplicationException; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.net.Uri; +import android.os.RemoteException; import android.provider.BaseColumns; import android.test.ProviderTestCase2; @@ -29,6 +32,8 @@ import com.android.photos.data.PhotoProvider.Albums; import com.android.photos.data.PhotoProvider.Metadata; import com.android.photos.data.PhotoProvider.Photos; +import java.util.ArrayList; + public class PhotoProviderTest extends ProviderTestCase2 { @SuppressWarnings("unused") private static final String TAG = PhotoProviderTest.class.getSimpleName(); @@ -317,4 +322,38 @@ public class PhotoProviderTest extends ProviderTestCase2 { mResolver.update(Metadata.CONTENT_URI, values, null, null); assertTrue(mNotifications.isNotified(Metadata.CONTENT_URI)); } + + public void testBatchTransaction() throws RemoteException, OperationApplicationException { + ArrayList operations = new ArrayList(); + ContentProviderOperation.Builder insert = ContentProviderOperation + .newInsert(Photos.CONTENT_URI); + insert.withValue(Photos.WIDTH, 200L); + insert.withValue(Photos.HEIGHT, 100L); + insert.withValue(Photos.DATE_TAKEN, System.currentTimeMillis()); + insert.withValue(Photos.ALBUM_ID, 1000L); + insert.withValue(Photos.MIME_TYPE, "image/jpg"); + insert.withValue(Photos.ACCOUNT_ID, 1L); + operations.add(insert.build()); + ContentProviderOperation.Builder update = ContentProviderOperation.newUpdate(Photos.CONTENT_URI); + update.withValue(Photos.DATE_MODIFIED, System.currentTimeMillis()); + String[] whereArgs = { + "100", + }; + String where = Photos.WIDTH + " = ?"; + update.withSelection(where, whereArgs); + operations.add(update.build()); + ContentProviderOperation.Builder delete = ContentProviderOperation + .newDelete(Photos.CONTENT_URI); + delete.withSelection(where, whereArgs); + operations.add(delete.build()); + mResolver.applyBatch(PhotoProvider.AUTHORITY, operations); + assertEquals(3, mNotifications.notificationCount()); + SQLiteDatabase db = mDBHelper.getReadableDatabase(); + long id = PhotoDatabaseUtils.queryPhotoIdFromAlbumId(db, 1000L); + Uri uri = ContentUris.withAppendedId(Photos.CONTENT_URI, id); + assertTrue(mNotifications.isNotified(uri)); + assertTrue(mNotifications.isNotified(Metadata.CONTENT_URI)); + assertTrue(mNotifications.isNotified(Photos.CONTENT_URI)); + } + } -- cgit v1.2.3