Add test for repo priorities + app metadata. Not passing yet.

This commit is contained in:
Peter Serwylo 2016-08-04 16:12:12 +10:00
parent e25d26aca0
commit 1d1c1ebb74
3 changed files with 81 additions and 21 deletions

View File

@ -301,7 +301,7 @@ public class RepoProvider extends FDroidProvider {
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
if (TextUtils.isEmpty(sortOrder)) {
sortOrder = "_ID ASC";
sortOrder = Cols.PRIORITY + " ASC";
}
switch (MATCHER.match(uri)) {

View File

@ -165,7 +165,7 @@ public abstract class MultiRepoUpdaterTest extends FDroidProviderTest {
repo.address = uri;
repo.name = name;
ContentValues values = new ContentValues(2);
ContentValues values = new ContentValues(3);
values.put(Schema.RepoTable.Cols.SIGNING_CERT, repo.signingCertificate);
values.put(Schema.RepoTable.Cols.ADDRESS, repo.address);
values.put(Schema.RepoTable.Cols.NAME, repo.name);

View File

@ -39,21 +39,53 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
public void mainRepo() throws RepoUpdater.UpdateException {
assertEmpty();
updateMain();
assertMainRepo(RepoProvider.Helper.all(context));
assertMainRepo();
}
@Test
public void archiveRepo() throws RepoUpdater.UpdateException {
assertEmpty();
updateArchive();
assertMainArchiveRepo(RepoProvider.Helper.all(context));
assertMainArchiveRepoMetadata();
}
@Test
public void conflictingRepo() throws RepoUpdater.UpdateException {
assertEmpty();
updateConflicting();
assertConflictingRepo(RepoProvider.Helper.all(context));
assertConflictingRepo();
}
@Test
public void conflictingMetadataTakesPriority() throws RepoUpdater.UpdateException {
updateConflicting();
updateMain();
updateArchive();
assertEquals(1, RepoProvider.Helper.findByAddress(context, REPO_CONFLICTING_URI).priority);
assertEquals(2, RepoProvider.Helper.findByAddress(context, REPO_MAIN_URI).priority);
assertEquals(3, RepoProvider.Helper.findByAddress(context, REPO_ARCHIVE_URI).priority);
assertMainRepo();
assertMainArchiveRepoMetadata();
assertConflictingRepo();
App a2048 = AppProvider.Helper.findHighestPriorityMetadata(context.getContentResolver(), "com.uberspot.a2048");
assert2048Metadata(a2048, "Conflicting");
// This is only provided by the "Conflicting" repo.
App calendar = AppProvider.Helper.findHighestPriorityMetadata(context.getContentResolver(), "org.dgtale.icsimport");
assertCalendarMetadata(calendar, "Conflicting");
// This is only provided by the "Main" or "Archive" repo. Both the main and archive repo both
// pull their metadata from the same build recipe in fdroidserver. The only difference is that
// the archive repository contains .apks from further back, but their metadata is the same.
App adAway = AppProvider.Helper.findHighestPriorityMetadata(context.getContentResolver(), "org.adaway");
assertAdAwayMetadata(adAway, "Normal");
// This is only provided by the "Main" repo.
App adb = AppProvider.Helper.findHighestPriorityMetadata(context.getContentResolver(), "siir.es.adbWireless");
assertAdAwayMetadata(adb, "Normal");
}
@Test
@ -133,10 +165,14 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertEquals("Repos", 3, repos.size());
assertMainRepo(repos);
assertMainArchiveRepo(repos);
assertMainArchiveRepoMetadata(repos);
assertConflictingRepo(repos);
}
private void assertMainRepo() {
assertMainRepo(RepoProvider.Helper.all(context));
}
/**
* + 2048 (com.uberspot.a2048)
* - Version 1.96 (19)
@ -157,17 +193,21 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertApksExist(apks, "org.adaway", new int[]{52, 53, 54});
assertApksExist(apks, "siir.es.adbWireless", new int[]{12});
assert2048(repo, "Normal");
assertAdAway(repo, "Normal");
assertAdb(repo, "Normal");
assert2048Metadata(repo, "Normal");
assertAdAwayMetadata(repo, "Normal");
assertAdbMetadata(repo, "Normal");
}
private void assert2048Metadata(Repo repo, @RepoIdentifier String id) {
App a2048 = AppProvider.Helper.findByPackageName(context.getContentResolver(), "com.uberspot.a2048", repo.getId());
assert2048Metadata(a2048, id);
}
/**
* @param id An identifier that we've put in the metadata for each repo to ensure that
* we can identify the metadata is coming from the correct repo.
*/
private void assert2048(Repo repo, @RepoIdentifier String id) {
App a2048 = AppProvider.Helper.findByPackageName(context.getContentResolver(), "com.uberspot.a2048", repo.getId());
private void assert2048Metadata(App a2048, @RepoIdentifier String id) {
assertNotNull(a2048);
assertEquals("2048", a2048.name);
assertEquals(String.format("<p>2048 from %s repo.</p>", id), a2048.description);
@ -177,9 +217,13 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertEquals(String.format("https://github.com/uberspot/2048-android/issues?%s", id), a2048.trackerURL);
}
/** @see ProperMultiRepoUpdaterTest#assert2048(Repo, String) */
private void assertAdAway(Repo repo, @RepoIdentifier String id) {
private void assertAdAwayMetadata(Repo repo, @RepoIdentifier String id) {
App adaway = AppProvider.Helper.findByPackageName(context.getContentResolver(), "org.adaway", repo.getId());
assertAdAwayMetadata(adaway, id);
}
/** @see ProperMultiRepoUpdaterTest#assert2048Metadata(Repo, String) */
private void assertAdAwayMetadata(App adaway, @RepoIdentifier String id) {
assertNotNull(adaway);
assertEquals(String.format("AdAway", id), adaway.name);
assertEquals(String.format("<p>AdAway from %s repo.</p>", id), adaway.description);
@ -192,9 +236,13 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertEquals(String.format("369138", id), adaway.flattrID);
}
/** @see ProperMultiRepoUpdaterTest#assert2048(Repo, String) */
private void assertAdb(Repo repo, @RepoIdentifier String id) {
private void assertAdbMetadata(Repo repo, @RepoIdentifier String id) {
App adb = AppProvider.Helper.findByPackageName(context.getContentResolver(), "siir.es.adbWireless", repo.getId());
assertAdbMetadata(adb, id);
}
/** @see ProperMultiRepoUpdaterTest#assert2048Metadata(Repo, String) */
private void assertAdbMetadata(App adb, @RepoIdentifier String id) {
assertNotNull(adb);
assertEquals("adbWireless", adb.name);
assertEquals(String.format("<p>adbWireless from %s repo.</p>", id), adb.description);
@ -204,9 +252,13 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertEquals(String.format("https://adbwireless.example.com/issues?%s", id), adb.trackerURL);
}
/** @see ProperMultiRepoUpdaterTest#assert2048(Repo, String) */
private void assertCalendar(Repo repo, @RepoIdentifier String id) {
private void assertCalendarMetadata(Repo repo, @RepoIdentifier String id) {
App calendar = AppProvider.Helper.findByPackageName(context.getContentResolver(), "org.dgtale.icsimport", repo.getId());
assertCalendarMetadata(calendar, id);
}
/** @see ProperMultiRepoUpdaterTest#assert2048Metadata(Repo, String) */
private void assertCalendarMetadata(App calendar, @RepoIdentifier String id) {
assertNotNull(calendar);
assertEquals("Add to calendar", calendar.name);
assertEquals(String.format("<p>Add to calendar from %s repo.</p>", id), calendar.description);
@ -217,6 +269,10 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertEquals("2225390", calendar.flattrID);
}
private void assertMainArchiveRepoMetadata() {
assertMainArchiveRepoMetadata(RepoProvider.Helper.all(context));
}
/**
* + AdAway (org.adaway)
* - Version 2.9.2 (51)
@ -233,14 +289,18 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
* - Version 1.35 (36)
* - Version 1.34 (35)
*/
private void assertMainArchiveRepo(List<Repo> allRepos) {
private void assertMainArchiveRepoMetadata(List<Repo> allRepos) {
Repo repo = findRepo(REPO_ARCHIVE, allRepos);
List<Apk> apks = ApkProvider.Helper.findByRepo(context, repo, Schema.ApkTable.Cols.ALL);
assertEquals("Apks for main archive repo", 13, apks.size());
assertApksExist(apks, "org.adaway", new int[]{35, 36, 37, 38, 40, 42, 45, 46, 47, 48, 49, 50, 51});
assertAdAway(repo, "Normal");
assertAdAwayMetadata(repo, "Normal");
}
private void assertConflictingRepo() {
assertConflictingRepo(RepoProvider.Helper.all(context));
}
/**
@ -261,8 +321,8 @@ public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest {
assertApksExist(apks, "org.adaway", new int[]{50, 51, 52, 53});
assertApksExist(apks, "org.dgtale.icsimport", new int[]{2, 3});
assertAdAway(repo, "Conflicting");
assertCalendar(repo, "Conflicting");
assertAdAwayMetadata(repo, "Conflicting");
assertCalendarMetadata(repo, "Conflicting");
}
}