From 249cdf2ddf7ed3a475beca3ffa1be64667c0f10f Mon Sep 17 00:00:00 2001 From: Adolfo Santiago Date: Sat, 28 May 2022 09:05:51 +0200 Subject: [PATCH] Fix instrumentation tests Although they are very old, at least they do not break anymore in case anyone wants to execute them. --- .../tusky/ExampleInstrumentedTest.java | 0 .../com/keylesspalace/tusky/MigrationsTest.kt | 4 +- .../keylesspalace/tusky/TimelineDAOTest.kt | 238 ++++++++++-------- 3 files changed, 131 insertions(+), 111 deletions(-) delete mode 100644 husky/app/src/androidTest/java/com/keylesspalace/tusky/ExampleInstrumentedTest.java diff --git a/husky/app/src/androidTest/java/com/keylesspalace/tusky/ExampleInstrumentedTest.java b/husky/app/src/androidTest/java/com/keylesspalace/tusky/ExampleInstrumentedTest.java deleted file mode 100644 index e69de29..0000000 diff --git a/husky/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt b/husky/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt index 9c65aeb..51d9b75 100644 --- a/husky/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt +++ b/husky/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt @@ -3,7 +3,7 @@ package com.keylesspalace.tusky import androidx.room.testing.MigrationTestHelper import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.runner.AndroidJUnit4 import com.keylesspalace.tusky.db.AppDatabase import org.junit.Assert.assertEquals import org.junit.Rule @@ -61,4 +61,4 @@ class MigrationsTest { assertEquals(accountId, cursor.getString(4)) assertEquals(username, cursor.getString(5)) } -} \ No newline at end of file +} diff --git a/husky/app/src/androidTest/java/com/keylesspalace/tusky/TimelineDAOTest.kt b/husky/app/src/androidTest/java/com/keylesspalace/tusky/TimelineDAOTest.kt index 2f891b3..f81c814 100644 --- a/husky/app/src/androidTest/java/com/keylesspalace/tusky/TimelineDAOTest.kt +++ b/husky/app/src/androidTest/java/com/keylesspalace/tusky/TimelineDAOTest.kt @@ -1,10 +1,15 @@ package com.keylesspalace.tusky import androidx.room.Room -import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry -import com.keylesspalace.tusky.db.* +import androidx.test.runner.AndroidJUnit4 +import com.keylesspalace.tusky.db.AppDatabase +import com.keylesspalace.tusky.db.TimelineAccountEntity +import com.keylesspalace.tusky.db.TimelineDao +import com.keylesspalace.tusky.db.TimelineStatusEntity +import com.keylesspalace.tusky.db.TimelineStatusWithAccount import com.keylesspalace.tusky.entity.Status +import com.keylesspalace.tusky.entity.Status.Visibility.PRIVATE import com.keylesspalace.tusky.repository.TimelineRepository import org.junit.After import org.junit.Assert.assertEquals @@ -37,16 +42,18 @@ class TimelineDAOTest { val ignoredOne = makeStatus(statusId = 1) val ignoredTwo = makeStatus(accountId = 2) - for ((status, author, reblogger) in listOf(setOne, setTwo, ignoredOne, ignoredTwo)) { + for((status, author, reblogger) in listOf(setOne, setTwo, ignoredOne, ignoredTwo)) { timelineDao.insertInTransaction(status, author, reblogger) } - val resultsFromDb = timelineDao.getStatusesForAccount(setOne.first.timelineUserId, - maxId = "21", sinceId = ignoredOne.first.serverId, limit = 10) - .blockingGet() + val resultsFromDb = timelineDao.getStatusesForAccount( + setOne.first.timelineUserId, + maxId = "21", sinceId = ignoredOne.first.serverId, limit = 10 + ) + .blockingGet() assertEquals(2, resultsFromDb.size) - for ((set, fromDb) in listOf(setTwo, setOne).zip(resultsFromDb)) { + for((set, fromDb) in listOf(setTwo, setOne).zip(resultsFromDb)) { val (status, author, reblogger) = set assertEquals(status, fromDb.status) assertEquals(author, fromDb.account) @@ -64,7 +71,7 @@ class TimelineDAOTest { timelineDao.insertStatusIfNotThere(placeholder) val fromDb = timelineDao.getStatusesForAccount(status.timelineUserId, null, null, 10) - .blockingGet() + .blockingGet() val result = fromDb.first() assertEquals(1, fromDb.size) @@ -79,40 +86,45 @@ class TimelineDAOTest { val now = System.currentTimeMillis() val oldDate = now - TimelineRepository.CLEANUP_INTERVAL - 20_000 val oldThisAccount = makeStatus( - statusId = 5, - createdAt = oldDate + statusId = 5, + createdAt = oldDate ) val oldAnotherAccount = makeStatus( - statusId = 10, - createdAt = oldDate, - accountId = 2 + statusId = 10, + createdAt = oldDate, + accountId = 2 ) val recentThisAccount = makeStatus( - statusId = 30, - createdAt = System.currentTimeMillis() + statusId = 30, + createdAt = System.currentTimeMillis() ) val recentAnotherAccount = makeStatus( - statusId = 60, - createdAt = System.currentTimeMillis(), - accountId = 2 + statusId = 60, + createdAt = System.currentTimeMillis(), + accountId = 2 ) - for ((status, author, reblogAuthor) in listOf(oldThisAccount, oldAnotherAccount, recentThisAccount, recentAnotherAccount)) { + for((status, author, reblogAuthor) in listOf( + oldThisAccount, + oldAnotherAccount, + recentThisAccount, + recentAnotherAccount + )) { timelineDao.insertInTransaction(status, author, reblogAuthor) } timelineDao.cleanup(now - TimelineRepository.CLEANUP_INTERVAL) assertEquals( - listOf(recentThisAccount), - timelineDao.getStatusesForAccount(1, null, null, 100).blockingGet() - .map { it.toTriple() } + listOf(recentThisAccount), + timelineDao.getStatusesForAccount(1, null, null, 100).blockingGet() + .map { it.toTriple() } ) assertEquals( - listOf(recentAnotherAccount), - timelineDao.getStatusesForAccount(2, null, null, 100).blockingGet() - .map { it.toTriple() } + listOf(recentAnotherAccount), + timelineDao.getStatusesForAccount(2, null, null, 100).blockingGet() + .map { it.toTriple() } ) } @@ -120,128 +132,136 @@ class TimelineDAOTest { fun overwriteDeletedStatus() { val oldStatuses = listOf( - makeStatus(statusId = 3), - makeStatus(statusId = 2), - makeStatus(statusId = 1) + makeStatus(statusId = 3), + makeStatus(statusId = 2), + makeStatus(statusId = 1) ) - timelineDao.deleteRange(1, oldStatuses.last().first.serverId, oldStatuses.first().first.serverId) + timelineDao.deleteRange( + 1, + oldStatuses.last().first.serverId, + oldStatuses.first().first.serverId + ) - for ((status, author, reblogAuthor) in oldStatuses) { + for((status, author, reblogAuthor) in oldStatuses) { timelineDao.insertInTransaction(status, author, reblogAuthor) } // status 2 gets deleted, newly loaded status contain only 1 + 3 val newStatuses = listOf( - makeStatus(statusId = 3), - makeStatus(statusId = 1) + makeStatus(statusId = 3), + makeStatus(statusId = 1) ) - timelineDao.deleteRange(1, newStatuses.last().first.serverId, newStatuses.first().first.serverId) + timelineDao.deleteRange( + 1, + newStatuses.last().first.serverId, + newStatuses.first().first.serverId + ) - for ((status, author, reblogAuthor) in newStatuses) { + for((status, author, reblogAuthor) in newStatuses) { timelineDao.insertInTransaction(status, author, reblogAuthor) } //make sure status 2 is no longer in db assertEquals( - newStatuses, - timelineDao.getStatusesForAccount(1, null, null, 100).blockingGet() - .map { it.toTriple() } + newStatuses, + timelineDao.getStatusesForAccount(1, null, null, 100).blockingGet() + .map { it.toTriple() } ) } private fun makeStatus( - accountId: Long = 1, - statusId: Long = 10, - reblog: Boolean = false, - createdAt: Long = statusId, - authorServerId: String = "20" + accountId: Long = 1, + statusId: Long = 10, + reblog: Boolean = false, + createdAt: Long = statusId, + authorServerId: String = "20" ): Triple { val author = TimelineAccountEntity( - authorServerId, - accountId, - "localUsername", - "username", - "displayName", - "blah", - "avatar", - "[\"tusky\": \"http://tusky.cool/emoji.jpg\"]", - false + authorServerId, + accountId, + "localUsername", + "username", + "displayName", + "blah", + "avatar", + "[\"tusky\": \"http://tusky.cool/emoji.jpg\"]", + false ) - val reblogAuthor = if (reblog) { + val reblogAuthor = if(reblog) { TimelineAccountEntity( - "R$authorServerId", - accountId, - "RlocalUsername", - "Rusername", - "RdisplayName", - "Rblah", - "Ravatar", - "[]", - false + "R$authorServerId", + accountId, + "RlocalUsername", + "Rusername", + "RdisplayName", + "Rblah", + "Ravatar", + "[]", + false ) } else null val even = accountId % 2 == 0L val status = TimelineStatusEntity( - serverId = statusId.toString(), - url = "url$statusId", - timelineUserId = accountId, - authorServerId = authorServerId, - inReplyToId = "inReplyToId$statusId", - inReplyToAccountId = "inReplyToAccountId$statusId", - content = "Content!$statusId", - createdAt = createdAt, - emojis = "emojis$statusId", - reblogsCount = 1 * statusId.toInt(), - favouritesCount = 2 * statusId.toInt(), - reblogged = even, - bookmarked = !even, - favourited = even, - sensitive = !even, - spoilerText = "spoier$statusId", - visibility = Status.Visibility.PRIVATE, - attachments = "attachments$accountId", - mentions = "mentions$accountId", - application = "application$accountId", - reblogServerId = if (reblog) (statusId * 100).toString() else null, - reblogAccountId = reblogAuthor?.serverId, - poll = null, - muted = false + serverId = statusId.toString(), + url = "url$statusId", + timelineUserId = accountId, + authorServerId = authorServerId, + inReplyToId = "inReplyToId$statusId", + inReplyToAccountId = "inReplyToAccountId$statusId", + content = "Content!$statusId", + createdAt = createdAt, + emojis = "emojis$statusId", + reblogsCount = 1 * statusId.toInt(), + favouritesCount = 2 * statusId.toInt(), + reblogged = even, + bookmarked = !even, + favourited = even, + sensitive = !even, + spoilerText = "spoier$statusId", + visibility = PRIVATE, + attachments = "attachments$accountId", + mentions = "mentions$accountId", + application = "application$accountId", + reblogServerId = if(reblog) (statusId * 100).toString() else null, + reblogAccountId = reblogAuthor?.serverId, + poll = null, + pleroma = null ) return Triple(status, author, reblogAuthor) } private fun createPlaceholder(serverId: String, timelineUserId: Long): TimelineStatusEntity { return TimelineStatusEntity( - serverId = serverId, - url = null, - timelineUserId = timelineUserId, - authorServerId = null, - inReplyToId = null, - inReplyToAccountId = null, - content = null, - createdAt = 0L, - emojis = null, - reblogsCount = 0, - favouritesCount = 0, - reblogged = false, - bookmarked = false, - favourited = false, - sensitive = false, - spoilerText = null, - visibility = null, - attachments = null, - mentions = null, - application = null, - reblogServerId = null, - reblogAccountId = null, - poll = null, - muted = false + serverId = serverId, + url = null, + timelineUserId = timelineUserId, + authorServerId = null, + inReplyToId = null, + inReplyToAccountId = null, + content = null, + createdAt = 0L, + emojis = null, + reblogsCount = 0, + favouritesCount = 0, + reblogged = false, + bookmarked = false, + favourited = false, + sensitive = false, + spoilerText = null, + visibility = null, + attachments = null, + mentions = null, + application = null, + reblogServerId = null, + reblogAccountId = null, + poll = null, + pleroma = null ) }