diff --git a/test/src/org/fdroid/fdroid/ApkProviderTest.java b/test/src/org/fdroid/fdroid/ApkProviderTest.java index 221d60aa1..e77ef41bc 100644 --- a/test/src/org/fdroid/fdroid/ApkProviderTest.java +++ b/test/src/org/fdroid/fdroid/ApkProviderTest.java @@ -6,6 +6,7 @@ import android.net.Uri; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.ApkProvider; +import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.mock.MockApk; import org.fdroid.fdroid.mock.MockApp; @@ -102,14 +103,61 @@ public class ApkProviderTest extends BaseApkProviderTest { // which are tested elsewhere. } + public void testDeleteArbitraryApks() { + Apk one = insertApkForRepo("com.example.one", 1, 10); + Apk two = insertApkForRepo("com.example.two", 1, 10); + Apk three = insertApkForRepo("com.example.three", 1, 10); + Apk four = insertApkForRepo("com.example.four", 1, 10); + Apk five = insertApkForRepo("com.example.five", 1, 10); + + assertTotalApkCount(5); + + assertEquals("com.example.one", one.id); + assertEquals("com.example.two", two.id); + assertEquals("com.example.five", five.id); + + String[] expectedIds = { + "com.example.one", + "com.example.two", + "com.example.three", + "com.example.four", + "com.example.five", + }; + + List all = ApkProvider.Helper.findByRepo(getSwappableContext(), new MockRepo(10), ApkProvider.DataColumns.ALL); + List actualIds = new ArrayList(); + for (Apk apk : all) { + actualIds.add(apk.id); + } + + TestUtils.assertContainsOnly(actualIds, expectedIds); + + List toDelete = new ArrayList(3); + toDelete.add(two); + toDelete.add(three); + toDelete.add(four); + ApkProvider.Helper.deleteApks(getSwappableContext(), toDelete); + + assertTotalApkCount(2); + + List allRemaining = ApkProvider.Helper.findByRepo(getSwappableContext(), new MockRepo(10), ApkProvider.DataColumns.ALL); + List actualRemainingIds = new ArrayList(); + for (Apk apk : allRemaining) { + actualRemainingIds.add(apk.id); + } + + String[] expectedRemainingIds = { + "com.example.one", + "com.example.five", + }; + + TestUtils.assertContainsOnly(actualRemainingIds, expectedRemainingIds); + } + public void testInvalidDeleteUris() { Apk apk = new MockApk("org.fdroid.fdroid", 10); - List apks = new ArrayList(); - apks.add(apk); - assertCantDelete(ApkProvider.getContentUri()); - assertCantDelete(ApkProvider.getContentUri(apks)); assertCantDelete(ApkProvider.getContentUri("org.fdroid.fdroid", 10)); assertCantDelete(ApkProvider.getContentUri(apk)); assertCantDelete(Uri.withAppendedPath(ApkProvider.getContentUri(), "some-random-path")); diff --git a/test/src/org/fdroid/fdroid/BaseApkProviderTest.java b/test/src/org/fdroid/fdroid/BaseApkProviderTest.java index e42818232..7c2e42bc4 100644 --- a/test/src/org/fdroid/fdroid/BaseApkProviderTest.java +++ b/test/src/org/fdroid/fdroid/BaseApkProviderTest.java @@ -2,6 +2,7 @@ package org.fdroid.fdroid; import android.content.ContentValues; import android.database.Cursor; +import android.net.Uri; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.ApkProvider; @@ -68,9 +69,10 @@ abstract class BaseApkProviderTest extends FDroidProviderTest { } } - protected void insertApkForRepo(String id, int versionCode, long repoId) { + protected Apk insertApkForRepo(String id, int versionCode, long repoId) { ContentValues additionalValues = new ContentValues(); additionalValues.put(ApkProvider.DataColumns.REPO_ID, repoId); - TestUtils.insertApk(this, id, versionCode, additionalValues); + Uri uri = TestUtils.insertApk(this, id, versionCode, additionalValues); + return ApkProvider.Helper.get(getSwappableContext(), uri); } }