summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Ishneet Ahuja <ishneet@google.com> 2025-02-19 16:30:26 +0000
committer Ishneet Ahuja <ishneet@google.com> 2025-03-03 15:23:43 +0000
commit2beadd8779269f33ec0826aaea279ef97e879e12 (patch)
tree6af8caff62210914abf4defa32e280e1f5333daa /tests
parent618c4babf98b8879d8ecedec5eb91ee466ed209a (diff)
Clear media sets cache and media sets content cache for a given
categoryId and its authority The current implementation erases the complete cache for both media sets and media set content. It is fine for the MVP since we only have one category at the moment but in case we add more in the future, this should not be the behaviour. Test: verified manually, fixed corresponding tests Bug: 394050877 Flag: com.android.providers.media.flags.enable_photopicker_search Change-Id: Idd8980c0e573376df8100b44102dcc01b5e8e992
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/providers/media/photopicker/sync/MediaSetsResetWorkerTest.java10
-rw-r--r--tests/src/com/android/providers/media/photopicker/sync/PickerSyncManagerTest.java18
-rw-r--r--tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtilTest.java30
-rw-r--r--tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaSetsDatabaseUtilsTest.java49
4 files changed, 102 insertions, 5 deletions
diff --git a/tests/src/com/android/providers/media/photopicker/sync/MediaSetsResetWorkerTest.java b/tests/src/com/android/providers/media/photopicker/sync/MediaSetsResetWorkerTest.java
index 3f7b2d262..c318151d5 100644
--- a/tests/src/com/android/providers/media/photopicker/sync/MediaSetsResetWorkerTest.java
+++ b/tests/src/com/android/providers/media/photopicker/sync/MediaSetsResetWorkerTest.java
@@ -17,6 +17,10 @@
package com.android.providers.media.photopicker.sync;
import static com.android.providers.media.photopicker.PickerSyncController.LOCAL_PICKER_PROVIDER_AUTHORITY;
+import static com.android.providers.media.photopicker.sync.PickerSyncManager.SYNC_CLOUD_ONLY;
+import static com.android.providers.media.photopicker.sync.PickerSyncManager.SYNC_WORKER_INPUT_AUTHORITY;
+import static com.android.providers.media.photopicker.sync.PickerSyncManager.SYNC_WORKER_INPUT_CATEGORY_ID;
+import static com.android.providers.media.photopicker.sync.PickerSyncManager.SYNC_WORKER_INPUT_SYNC_SOURCE;
import static com.android.providers.media.photopicker.sync.SyncWorkerTestUtils.initializeTestWorkManager;
import static com.android.providers.media.photopicker.util.PickerDbTestUtils.CLOUD_ID_1;
import static com.android.providers.media.photopicker.util.PickerDbTestUtils.CLOUD_ID_2;
@@ -43,6 +47,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.provider.CloudMediaProviderContract;
import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.work.Data;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkInfo;
import androidx.work.WorkManager;
@@ -65,6 +70,7 @@ import org.mockito.Mock;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.ExecutionException;
public class MediaSetsResetWorkerTest {
@@ -147,6 +153,10 @@ public class MediaSetsResetWorkerTest {
// Setup
final OneTimeWorkRequest request =
new OneTimeWorkRequest.Builder(MediaSetsResetWorker.class)
+ .setInputData(new Data(Map.of(
+ SYNC_WORKER_INPUT_SYNC_SOURCE, SYNC_CLOUD_ONLY,
+ SYNC_WORKER_INPUT_CATEGORY_ID, mCategoryId,
+ SYNC_WORKER_INPUT_AUTHORITY, mAuthority)))
.build();
final WorkManager workManager = WorkManager.getInstance(mContext);
diff --git a/tests/src/com/android/providers/media/photopicker/sync/PickerSyncManagerTest.java b/tests/src/com/android/providers/media/photopicker/sync/PickerSyncManagerTest.java
index 60e43e934..59473d7e1 100644
--- a/tests/src/com/android/providers/media/photopicker/sync/PickerSyncManagerTest.java
+++ b/tests/src/com/android/providers/media/photopicker/sync/PickerSyncManagerTest.java
@@ -800,6 +800,15 @@ public class PickerSyncManagerTest {
assertThat(resetRequest.getWorkSpec().isPeriodic()).isFalse();
assertThat(resetRequest.getWorkSpec().id).isNotNull();
assertThat(resetRequest.getWorkSpec().constraints.requiresBatteryNotLow()).isFalse();
+ assertThat(resetRequest.getWorkSpec().input
+ .getInt(SYNC_WORKER_INPUT_SYNC_SOURCE, -1))
+ .isEqualTo(SYNC_LOCAL_ONLY);
+ assertThat(resetRequest.getWorkSpec().input
+ .getString(SYNC_WORKER_INPUT_CATEGORY_ID))
+ .isEqualTo(categoryId);
+ assertThat(resetRequest.getWorkSpec().input
+ .getString(SYNC_WORKER_INPUT_AUTHORITY))
+ .isEqualTo(SearchProvider.AUTHORITY);
WorkRequest syncRequest = workRequestList.get(1).get(0);
assertThat(syncRequest.getWorkSpec().workerClassName)
@@ -860,6 +869,15 @@ public class PickerSyncManagerTest {
assertThat(resetRequest.getWorkSpec().isPeriodic()).isFalse();
assertThat(resetRequest.getWorkSpec().id).isNotNull();
assertThat(resetRequest.getWorkSpec().constraints.requiresBatteryNotLow()).isFalse();
+ assertThat(resetRequest.getWorkSpec().input
+ .getInt(SYNC_WORKER_INPUT_SYNC_SOURCE, -1))
+ .isEqualTo(SYNC_CLOUD_ONLY);
+ assertThat(resetRequest.getWorkSpec().input
+ .getString(SYNC_WORKER_INPUT_CATEGORY_ID))
+ .isEqualTo(categoryId);
+ assertThat(resetRequest.getWorkSpec().input
+ .getString(SYNC_WORKER_INPUT_AUTHORITY))
+ .isEqualTo(SearchProvider.AUTHORITY);
WorkRequest syncRequest = workRequestList.get(1).get(0);
assertThat(syncRequest.getWorkSpec().workerClassName)
diff --git a/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtilTest.java b/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtilTest.java
index cbf7baa36..bdb7944d3 100644
--- a/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtilTest.java
+++ b/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtilTest.java
@@ -620,6 +620,7 @@ public class MediaInMediaSetsDatabaseUtilTest {
assertAddMediaOperation(mFacade, CLOUD_PROVIDER, cursor3, 1);
Long mediaSetPickerId = 1L;
+ Long secondMediaSetPickerId = 2L;
final long cloudRowsInsertedCount = MediaInMediaSetsDatabaseUtil.cacheMediaOfMediaSet(
mDatabase, List.of(
@@ -632,10 +633,22 @@ public class MediaInMediaSetsDatabaseUtilTest {
.that(cloudRowsInsertedCount)
.isEqualTo(3);
+ final long secondCloudRowsInsertedCount = MediaInMediaSetsDatabaseUtil.cacheMediaOfMediaSet(
+ mDatabase, List.of(
+ getContentValues(null, CLOUD_ID_3, secondMediaSetPickerId),
+ getContentValues(LOCAL_ID_2, CLOUD_ID_2, secondMediaSetPickerId),
+ getContentValues(LOCAL_ID_1, CLOUD_ID_1, secondMediaSetPickerId)
+ ), CLOUD_PROVIDER);
+
+ assertWithMessage("Unexpected number of rows inserted in the search results table")
+ .that(secondCloudRowsInsertedCount)
+ .isEqualTo(3);
+
// Clear the data
- MediaInMediaSetsDatabaseUtil.clearMediaInMediaSetsCache(mDatabase);
+ MediaInMediaSetsDatabaseUtil.clearMediaInMediaSetsCache(
+ mDatabase, List.of(mediaSetPickerId.toString()));
- // Retrieved cursor should be empty
+ // Retrieved cursor for mediaSetPickerId should be empty
Bundle extras = new Bundle();
extras.putInt("page_size", 100);
extras.putStringArrayList("providers",
@@ -648,6 +661,19 @@ public class MediaInMediaSetsDatabaseUtilTest {
assertNotNull(mediaCursor);
assertEquals(/*expected*/0, /*actual*/ mediaCursor.getCount());
+ // Retrieved cursor for secondmediaSetPickerId should be non-empty
+ Bundle secondExtras = new Bundle();
+ secondExtras.putInt("page_size", 100);
+ secondExtras.putStringArrayList("providers",
+ new ArrayList<>(Arrays.asList(LOCAL_PROVIDER, CLOUD_PROVIDER)));
+ secondExtras.putString("intent_action", MediaStore.ACTION_PICK_IMAGES);
+ MediaInMediaSetsQuery secondMediaInMediaSetQuery = new MediaInMediaSetsQuery(
+ secondExtras, secondMediaSetPickerId);
+ Cursor secondMediaCursor = MediaInMediaSetsDatabaseUtil.queryMediaInMediaSet(
+ mMockSyncController, secondMediaInMediaSetQuery, LOCAL_PROVIDER, CLOUD_PROVIDER);
+ assertNotNull(secondMediaCursor);
+ assertEquals(/*expected*/3, /*actual*/ secondMediaCursor.getCount());
+
}
private ContentValues getContentValues(
diff --git a/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaSetsDatabaseUtilsTest.java b/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaSetsDatabaseUtilsTest.java
index 336bccc4a..432f76a32 100644
--- a/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaSetsDatabaseUtilsTest.java
+++ b/tests/src/com/android/providers/media/photopicker/v2/sqlite/MediaSetsDatabaseUtilsTest.java
@@ -238,7 +238,26 @@ public class MediaSetsDatabaseUtilsTest {
}
@Test
- public void testClearMediaSetsCache() throws RequestObsoleteException {
+ public void testGetMediaSetPickerIdsForCategoryId() {
+ Cursor c = getCursorForMediaSetInsertionTest();
+ List<String> mimeTypes = new ArrayList<>();
+ mimeTypes.add(mMimeType);
+
+ long mediaSetsInserted = MediaSetsDatabaseUtil.cacheMediaSets(
+ mDatabase, c, mCategoryId, mAuthority, mimeTypes);
+ // Assert successful insertion
+ assertEquals("Count of inserted media sets should be equal to the cursor size",
+ /*expected*/ c.getCount(), /*actual*/ mediaSetsInserted);
+
+ List<String> mediaSetPickerIds = MediaSetsDatabaseUtil
+ .getMediaSetPickerIdsForGivenCategoryId(mDatabase, mCategoryId, mAuthority);
+ // Assert that the list has some sqlite generated ids
+ assertNotNull(mediaSetPickerIds);
+ assertTrue(!mediaSetPickerIds.isEmpty());
+ }
+
+ @Test
+ public void testClearMediaSetsCache() {
// Insert metadata into the table
Cursor c = getCursorForMediaSetInsertionTest();
List<String> mimeTypes = new ArrayList<>();
@@ -249,10 +268,17 @@ public class MediaSetsDatabaseUtilsTest {
assertEquals("Count of inserted media sets should be equal to the cursor size",
/*expected*/ c.getCount(), /*actual*/ mediaSetsInserted);
+ String secondCategoryId = "secCategoryId";
+ int mediaSetsInserted2 = MediaSetsDatabaseUtil.cacheMediaSets(
+ mDatabase, c, secondCategoryId, mAuthority, mimeTypes);
+ assertEquals("Count of inserted media sets should be equal to the cursor size",
+ /*expected*/ c.getCount(), /*actual*/ mediaSetsInserted2);
+
+
// Delete the inserted items
- MediaSetsDatabaseUtil.clearMediaSetsCache(mDatabase);
+ MediaSetsDatabaseUtil.clearMediaSetsCache(mDatabase, mCategoryId, mAuthority);
- // Retrieved cursor should be empty
+ // Retrieved cursor should be empty for mCategoryId
Bundle extras = new Bundle();
extras.putString(MediaSetsSyncRequestParams.KEY_PARENT_CATEGORY_AUTHORITY, mAuthority);
extras.putString(MediaSetsSyncRequestParams.KEY_PARENT_CATEGORY_ID, mCategoryId);
@@ -265,6 +291,23 @@ public class MediaSetsDatabaseUtilsTest {
mDatabase, requestParams);
assertNotNull(mediaSetCursor);
assertEquals(/*expected*/ 0, /*actual*/ mediaSetCursor.getCount());
+
+ // Retrieved cursor should not be empty for secondCategoryId since only the media sets for
+ // mCategoryId have been deleted in the previous call
+ Bundle secondExtras = new Bundle();
+ secondExtras.putString(
+ MediaSetsSyncRequestParams.KEY_PARENT_CATEGORY_AUTHORITY, mAuthority);
+ secondExtras.putString(MediaSetsSyncRequestParams.KEY_PARENT_CATEGORY_ID, secondCategoryId);
+ secondExtras.putStringArrayList(
+ MediaSetsSyncRequestParams.KEY_MIME_TYPES,
+ new ArrayList<String>(mimeTypes));
+ MediaSetsSyncRequestParams secondRequestParams =
+ new MediaSetsSyncRequestParams(secondExtras);
+
+ Cursor secondMediaSetCursor = MediaSetsDatabaseUtil.getMediaSetsForCategory(
+ mDatabase, secondRequestParams);
+ assertNotNull(secondMediaSetCursor);
+ assertEquals(/*expected*/ 1, /*actual*/ secondMediaSetCursor.getCount());
}
private Cursor getCursorForMediaSetInsertionTest() {