mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-04-21 07:18:05 -04:00
[db] New repos now get lower weight than older ones
so they do not override the information from older repos anymore. This is especially an issue for the official repo which historically had the lowest priority while it should have the highest.
This commit is contained in:
@@ -35,9 +35,9 @@ internal class AppDaoTest : AppTest() {
|
||||
@Test
|
||||
fun testGetSameAppFromTwoRepos() {
|
||||
// insert same app into three repos (repoId1 has highest weight)
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
appDao.insert(repoId3, packageName, app3, locales)
|
||||
@@ -67,9 +67,9 @@ internal class AppDaoTest : AppTest() {
|
||||
@Test
|
||||
fun testAppRepoPref() {
|
||||
// insert same app into three repos (repoId1 has highest weight)
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
appDao.insert(repoId3, packageName, app3, locales)
|
||||
@@ -93,8 +93,8 @@ internal class AppDaoTest : AppTest() {
|
||||
@Test
|
||||
fun testGetSameAppFromTwoReposOneDisabled() {
|
||||
// insert same app into two repos (repoId2 has highest weight)
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.fail
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
internal class AppListItemsTest : AppTest() {
|
||||
|
||||
@@ -48,7 +49,6 @@ internal class AppListItemsTest : AppTest() {
|
||||
appDao.insert(repoId, packageName2, app2, locales)
|
||||
|
||||
// one of the apps is installed
|
||||
@Suppress("DEPRECATION")
|
||||
val packageInfo2 = PackageInfo().apply {
|
||||
packageName = packageName2
|
||||
versionName = getRandomString()
|
||||
@@ -108,7 +108,6 @@ internal class AppListItemsTest : AppTest() {
|
||||
appDao.insert(repoId, packageName2, app2, locales)
|
||||
|
||||
// one of the apps is installed
|
||||
@Suppress("DEPRECATION")
|
||||
val packageInfo2 = PackageInfo().apply {
|
||||
packageName = packageName2
|
||||
versionName = getRandomString()
|
||||
@@ -177,7 +176,6 @@ internal class AppListItemsTest : AppTest() {
|
||||
appDao.insert(repoId3, packageName3, app3b, locales)
|
||||
|
||||
// one of the apps is installed
|
||||
@Suppress("DEPRECATION")
|
||||
val packageInfo2 = PackageInfo().apply {
|
||||
packageName = packageName2
|
||||
versionName = getRandomString()
|
||||
@@ -306,7 +304,6 @@ internal class AppListItemsTest : AppTest() {
|
||||
appDao.insert(repoId, packageName2, app2, locales)
|
||||
|
||||
// one of the apps is installed
|
||||
@Suppress("DEPRECATION")
|
||||
val packageInfo2 = PackageInfo().apply {
|
||||
packageName = packageName2
|
||||
versionName = getRandomString()
|
||||
@@ -429,9 +426,9 @@ internal class AppListItemsTest : AppTest() {
|
||||
@Test
|
||||
fun testFromRepoWithHighestWeight() {
|
||||
// insert same app into three repos (repoId1 has highest weight)
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId3, packageName, app3, locales)
|
||||
@@ -454,9 +451,9 @@ internal class AppListItemsTest : AppTest() {
|
||||
@Test
|
||||
fun testFromRepoFromAppPrefs() {
|
||||
// insert same app into three repos (repoId1 has highest weight)
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId3, packageName, app3, locales)
|
||||
@@ -539,7 +536,6 @@ internal class AppListItemsTest : AppTest() {
|
||||
appDao.insert(repoId, packageName3, app3, locales)
|
||||
|
||||
// define packageInfo for each test
|
||||
@Suppress("DEPRECATION")
|
||||
val packageInfo1 = PackageInfo().apply {
|
||||
packageName = packageName1
|
||||
versionName = getRandomString()
|
||||
@@ -581,7 +577,6 @@ internal class AppListItemsTest : AppTest() {
|
||||
appDao.insert(repoId, packageName, app1, locales)
|
||||
|
||||
val packageInfoCreator = { name: String ->
|
||||
@Suppress("DEPRECATION")
|
||||
PackageInfo().apply {
|
||||
packageName = name
|
||||
versionName = name
|
||||
|
||||
@@ -71,7 +71,14 @@ internal class AppOverviewItemsTest : AppTest() {
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
|
||||
// now icon is returned from app in second repo
|
||||
// app is still returned as before
|
||||
appDao.getAppOverviewItems().getOrFail().let { apps ->
|
||||
assertEquals(1, apps.size)
|
||||
assertEquals(app1.icon.getBestLocale(locales), apps[0].getIcon(locales))
|
||||
}
|
||||
|
||||
// after preferring second repo, icon is returned from app in second repo
|
||||
appPrefsDao.update(AppPrefs(packageName, preferredRepoId = repoId2))
|
||||
appDao.getAppOverviewItems().getOrFail().let { apps ->
|
||||
assertEquals(1, apps.size)
|
||||
assertEquals(app2.icon.getBestLocale(locales), apps[0].getIcon(locales))
|
||||
@@ -152,7 +159,14 @@ internal class AppOverviewItemsTest : AppTest() {
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
|
||||
// now second app from second repo is returned
|
||||
// app is still returned as before, new repo doesn't override old one
|
||||
appDao.getAppOverviewItems().getOrFail().let { apps ->
|
||||
assertEquals(1, apps.size)
|
||||
assertEquals(app1, apps[0])
|
||||
}
|
||||
|
||||
// now second app from second repo is returned after preferring it explicitly
|
||||
appPrefsDao.update(AppPrefs(packageName, preferredRepoId = repoId2))
|
||||
appDao.getAppOverviewItems().getOrFail().let { apps ->
|
||||
assertEquals(1, apps.size)
|
||||
assertEquals(app2, apps[0])
|
||||
@@ -162,9 +176,9 @@ internal class AppOverviewItemsTest : AppTest() {
|
||||
@Test
|
||||
fun testGetByRepoPref() {
|
||||
// insert same app into three repos (repoId1 has highest weight)
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
appDao.insert(repoId3, packageName, app3, locales)
|
||||
@@ -255,8 +269,10 @@ internal class AppOverviewItemsTest : AppTest() {
|
||||
assertEquals(3, appDao.getAppOverviewItems().getOrFail().size)
|
||||
|
||||
// app3b is the same as app3, but has an icon, so is not last anymore
|
||||
// after we prefer that repo for this app
|
||||
val app3b = app3.copy(icon = icons2)
|
||||
appDao.insert(repoId2, packageName3, app3b)
|
||||
appPrefsDao.update(AppPrefs(packageName3, preferredRepoId = repoId2))
|
||||
// note that we don't insert a version here
|
||||
appDao.getAppOverviewItems().getOrFail().let { apps ->
|
||||
assertEquals(3, apps.size)
|
||||
@@ -307,9 +323,10 @@ internal class AppOverviewItemsTest : AppTest() {
|
||||
// note that we don't insert a version here
|
||||
assertEquals(3, appDao.getAppOverviewItems("A").getOrFail().size)
|
||||
|
||||
// app3b is the same as app3, but has an icon, so is not last anymore
|
||||
// app3b is the same as app3, but has an icon and is preferred, so is not last anymore
|
||||
val app3b = app3.copy(icon = icons2)
|
||||
appDao.insert(repoId2, packageName3, app3b)
|
||||
appPrefsDao.update(AppPrefs(packageName3, preferredRepoId = repoId2))
|
||||
// note that we don't insert a version here
|
||||
appDao.getAppOverviewItems("A").getOrFail().let { apps ->
|
||||
assertEquals(3, apps.size)
|
||||
|
||||
@@ -55,9 +55,9 @@ internal class AppPrefsDaoTest : AppTest() {
|
||||
@Test
|
||||
fun testGetPreferredRepos() {
|
||||
// insert three apps, the third is in repo2 and repo3
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageName1, app1, locales)
|
||||
appDao.insert(repoId2, packageName2, app2, locales)
|
||||
appDao.insert(repoId2, packageName3, app3, locales)
|
||||
|
||||
@@ -136,8 +136,8 @@ internal class DbUpdateCheckerTest : AppTest() {
|
||||
@Test
|
||||
fun testSuggestedVersionOnlyFromPreferredRepo() {
|
||||
// insert the same app into two repos
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageName, app1, locales)
|
||||
appDao.insert(repoId2, packageName, app2, locales)
|
||||
|
||||
@@ -225,9 +225,9 @@ internal class DbUpdateCheckerTest : AppTest() {
|
||||
@Test
|
||||
fun testGetUpdatableAppsOnlyFromPreferredRepo() {
|
||||
// insert the same app into three repos
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId3 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId2 = repoDao.insertOrReplace(getRandomRepo())
|
||||
val repoId1 = repoDao.insertOrReplace(getRandomRepo())
|
||||
appDao.insert(repoId1, packageInfo.packageName, app1, locales)
|
||||
appDao.insert(repoId2, packageInfo.packageName, app2, locales)
|
||||
appDao.insert(repoId3, packageInfo.packageName, app3, locales)
|
||||
|
||||
@@ -110,7 +110,7 @@ internal class RepositoryDaoTest : DbTest() {
|
||||
val repositoryPreferences2 = repoDao.getRepositoryPreferences(repoId2)
|
||||
assertEquals(repoId2, repositoryPreferences2?.repoId)
|
||||
// second repo has one weight point more than first repo
|
||||
assertEquals(repositoryPreferences1?.weight?.plus(1), repositoryPreferences2?.weight)
|
||||
assertEquals(repositoryPreferences1?.weight?.minus(2), repositoryPreferences2?.weight)
|
||||
|
||||
// remove first repo and check that the database only returns one
|
||||
repoDao.deleteRepository(repoId1)
|
||||
@@ -277,4 +277,15 @@ internal class RepositoryDaoTest : DbTest() {
|
||||
assertEquals(1, repoDao.getRepositories().size)
|
||||
assertEquals(cert, repoDao.getRepositories()[0].certificate)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testGetMinRepositoryWeight() {
|
||||
assertEquals(Int.MAX_VALUE, repoDao.getMinRepositoryWeight())
|
||||
|
||||
repoDao.insertOrReplace(getRandomRepo())
|
||||
assertEquals(Int.MAX_VALUE - 2, repoDao.getMinRepositoryWeight())
|
||||
|
||||
repoDao.insertOrReplace(getRandomRepo())
|
||||
assertEquals(Int.MAX_VALUE - 4, repoDao.getMinRepositoryWeight())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user