This commit is contained in:
parent
c0381144d1
commit
758708e18d
@ -380,11 +380,13 @@ class Repository(private val api: SelfossApi, private val appSettingsService: Ap
|
|||||||
private fun deleteDBAction(action: ACTION) =
|
private fun deleteDBAction(action: ACTION) =
|
||||||
db.actionsQueries.deleteAction(action.id)
|
db.actionsQueries.deleteAction(action.id)
|
||||||
|
|
||||||
|
// TODO: This function should be private
|
||||||
fun getDBTags(): List<TAG> = db.tagsQueries.tags().executeAsList()
|
fun getDBTags(): List<TAG> = db.tagsQueries.tags().executeAsList()
|
||||||
|
|
||||||
|
// TODO: This function should be private
|
||||||
fun getDBSources(): List<SOURCE> = db.sourcesQueries.sources().executeAsList()
|
fun getDBSources(): List<SOURCE> = db.sourcesQueries.sources().executeAsList()
|
||||||
|
|
||||||
fun resetDBTagsWithData(tagEntities: List<SelfossModel.Tag>) {
|
private fun resetDBTagsWithData(tagEntities: List<SelfossModel.Tag>) {
|
||||||
db.tagsQueries.deleteAllTags()
|
db.tagsQueries.deleteAllTags()
|
||||||
|
|
||||||
db.tagsQueries.transaction {
|
db.tagsQueries.transaction {
|
||||||
@ -394,7 +396,7 @@ class Repository(private val api: SelfossApi, private val appSettingsService: Ap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resetDBSourcesWithData(sources: List<SelfossModel.Source>) {
|
private fun resetDBSourcesWithData(sources: List<SelfossModel.Source>) {
|
||||||
db.sourcesQueries.deleteAllSources()
|
db.sourcesQueries.deleteAllSources()
|
||||||
|
|
||||||
db.sourcesQueries.transaction {
|
db.sourcesQueries.transaction {
|
||||||
|
@ -2,16 +2,19 @@ package bou.amine.apps.readerforselfossv2.repository
|
|||||||
|
|
||||||
import bou.amine.apps.readerforselfossv2.dao.ITEM
|
import bou.amine.apps.readerforselfossv2.dao.ITEM
|
||||||
import bou.amine.apps.readerforselfossv2.dao.ReaderForSelfossDB
|
import bou.amine.apps.readerforselfossv2.dao.ReaderForSelfossDB
|
||||||
|
import bou.amine.apps.readerforselfossv2.dao.TAG
|
||||||
import bou.amine.apps.readerforselfossv2.model.SelfossModel
|
import bou.amine.apps.readerforselfossv2.model.SelfossModel
|
||||||
import bou.amine.apps.readerforselfossv2.rest.SelfossApi
|
import bou.amine.apps.readerforselfossv2.rest.SelfossApi
|
||||||
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
|
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
|
||||||
import bou.amine.apps.readerforselfossv2.utils.ItemType
|
import bou.amine.apps.readerforselfossv2.utils.ItemType
|
||||||
|
import bou.amine.apps.readerforselfossv2.utils.toEntity
|
||||||
import com.github.ln_12.library.ConnectivityStatus
|
import com.github.ln_12.library.ConnectivityStatus
|
||||||
import io.mockk.*
|
import io.mockk.*
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlin.test.BeforeTest
|
import kotlin.test.BeforeTest
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertNotSame
|
||||||
import kotlin.test.assertSame
|
import kotlin.test.assertSame
|
||||||
|
|
||||||
class RepositoryTest() {
|
class RepositoryTest() {
|
||||||
@ -30,6 +33,7 @@ class RepositoryTest() {
|
|||||||
every { appSettingsService.getApiVersion() } returns 4
|
every { appSettingsService.getApiVersion() } returns 4
|
||||||
every { appSettingsService.getBaseUrl() } returns "https://test.com/selfoss/"
|
every { appSettingsService.getBaseUrl() } returns "https://test.com/selfoss/"
|
||||||
every { appSettingsService.isItemCachingEnabled() } returns false
|
every { appSettingsService.isItemCachingEnabled() } returns false
|
||||||
|
every { appSettingsService.isUpdateSourcesEnabled() } returns true
|
||||||
|
|
||||||
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(true)
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(true)
|
||||||
|
|
||||||
@ -37,6 +41,9 @@ class RepositoryTest() {
|
|||||||
coEvery { api.stats() } returns SelfossModel.Stats(NUMBER_ARTICLES, NUMBER_UNREAD, NUMBER_STARRED)
|
coEvery { api.stats() } returns SelfossModel.Stats(NUMBER_ARTICLES, NUMBER_UNREAD, NUMBER_STARRED)
|
||||||
|
|
||||||
every { db.itemsQueries.items().executeAsList() } returns generateTestDBItems()
|
every { db.itemsQueries.items().executeAsList() } returns generateTestDBItems()
|
||||||
|
every { db.tagsQueries.deleteAllTags() } returns Unit
|
||||||
|
every { db.tagsQueries.transaction(any(), any()) } returns Unit
|
||||||
|
every { db.tagsQueries.insertTag(any()) } returns Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -281,6 +288,115 @@ class RepositoryTest() {
|
|||||||
coVerify(exactly = 0) { api.stats() }
|
coVerify(exactly = 0) { api.stats() }
|
||||||
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Get tags`() {
|
||||||
|
val tags = listOf(SelfossModel.Tag("test", "red", 6),
|
||||||
|
SelfossModel.Tag("second", "yellow", 0))
|
||||||
|
|
||||||
|
coEvery { api.tags() } returns tags
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
var testTags: List<SelfossModel.Tag>? = null
|
||||||
|
runBlocking {
|
||||||
|
testTags = repository.getTags()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(tags, testTags)
|
||||||
|
verify(exactly = 0) { db.tagsQueries.tags().executeAsList() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Get tags with sources update disabled`() {
|
||||||
|
val tags = listOf(SelfossModel.Tag("test", "red", 6),
|
||||||
|
SelfossModel.Tag("second", "yellow", 0))
|
||||||
|
val tagsDB = listOf(TAG("test_DB", "red", 6),
|
||||||
|
TAG("second_DB", "yellow", 0))
|
||||||
|
|
||||||
|
coEvery { api.tags() } returns tags
|
||||||
|
coEvery { db.tagsQueries.tags().executeAsList() } returns tagsDB
|
||||||
|
every { appSettingsService.isUpdateSourcesEnabled() } returns false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
var testTags: List<SelfossModel.Tag>? = null
|
||||||
|
runBlocking {
|
||||||
|
testTags = repository.getTags()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertNotSame(tags, testTags)
|
||||||
|
assertSame(tagsDB.first().name, testTags?.first()?.tag)
|
||||||
|
coVerify(exactly = 0) { api.tags() }
|
||||||
|
verify(atLeast = 1) { db.tagsQueries.tags().executeAsList() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Get tags with sources update and db disabled`() {
|
||||||
|
val tags = listOf(SelfossModel.Tag("test", "red", 6),
|
||||||
|
SelfossModel.Tag("second", "yellow", 0))
|
||||||
|
val tagsDB = listOf(TAG("test_DB", "red", 6),
|
||||||
|
TAG("second_DB", "yellow", 0))
|
||||||
|
|
||||||
|
coEvery { api.tags() } returns tags
|
||||||
|
coEvery { db.tagsQueries.tags().executeAsList() } returns tagsDB
|
||||||
|
every { appSettingsService.isUpdateSourcesEnabled() } returns false
|
||||||
|
every { appSettingsService.isItemCachingEnabled() } returns false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
var testTags: List<SelfossModel.Tag>? = null
|
||||||
|
runBlocking {
|
||||||
|
testTags = repository.getTags()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(null, testTags)
|
||||||
|
coVerify(exactly = 0) { api.tags() }
|
||||||
|
verify(exactly = 0) { db.tagsQueries.tags().executeAsList() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Get tags without connection`() {
|
||||||
|
val tags = listOf(SelfossModel.Tag("test", "red", 6),
|
||||||
|
SelfossModel.Tag("second", "yellow", 0))
|
||||||
|
val tagsDB = listOf(TAG("test_DB", "red", 6),
|
||||||
|
TAG("second_DB", "yellow", 0))
|
||||||
|
|
||||||
|
coEvery { api.tags() } returns tags
|
||||||
|
coEvery { db.tagsQueries.tags().executeAsList() } returns tagsDB
|
||||||
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false)
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
var testTags: List<SelfossModel.Tag>? = null
|
||||||
|
runBlocking {
|
||||||
|
testTags = repository.getTags()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertNotSame(tags, testTags)
|
||||||
|
assertSame(tagsDB.first().name, testTags?.first()?.tag)
|
||||||
|
coVerify(exactly = 0) { api.tags() }
|
||||||
|
verify(atLeast = 1) { db.tagsQueries.tags().executeAsList() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Get tags without connection and items caching disabled`() {
|
||||||
|
val tags = listOf(SelfossModel.Tag("test", "red", 6),
|
||||||
|
SelfossModel.Tag("second", "yellow", 0))
|
||||||
|
val tagsDB = listOf(TAG("test_DB", "red", 6),
|
||||||
|
TAG("second_DB", "yellow", 0))
|
||||||
|
|
||||||
|
coEvery { api.tags() } returns tags
|
||||||
|
coEvery { db.tagsQueries.tags().executeAsList() } returns tagsDB
|
||||||
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false)
|
||||||
|
every { appSettingsService.isItemCachingEnabled() } returns false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
var testTags: List<SelfossModel.Tag>? = null
|
||||||
|
runBlocking {
|
||||||
|
testTags = repository.getTags()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(null, testTags)
|
||||||
|
coVerify(exactly = 0) { api.tags() }
|
||||||
|
verify(exactly = 0) { db.tagsQueries.tags().executeAsList() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateTestDBItems(item : FakeItemParameters = FakeItemParameters()) : List<ITEM> {
|
fun generateTestDBItems(item : FakeItemParameters = FakeItemParameters()) : List<ITEM> {
|
||||||
|
Loading…
Reference in New Issue
Block a user