This commit is contained in:
parent
3f0a3903ae
commit
a382fc89ea
@ -269,6 +269,7 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
private fun getContentFromMercury(customTabsIntent: CustomTabsIntent) {
|
private fun getContentFromMercury(customTabsIntent: CustomTabsIntent) {
|
||||||
if (repository.isNetworkAvailable()) {
|
if (repository.isNetworkAvailable()) {
|
||||||
binding.progressBar.visibility = View.VISIBLE
|
binding.progressBar.visibility = View.VISIBLE
|
||||||
|
// TODO: The api should be accessed through the repository
|
||||||
val parser = MercuryApi()
|
val parser = MercuryApi()
|
||||||
|
|
||||||
parser.parseUrl(url).enqueue(
|
parser.parseUrl(url).enqueue(
|
||||||
|
@ -378,6 +378,7 @@ class Repository(private val api: SelfossApi, private val appSettingsService: Ap
|
|||||||
api.refreshLoginInformation()
|
api.refreshLoginInformation()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: This should be private
|
||||||
suspend fun updateApiVersion() {
|
suspend fun updateApiVersion() {
|
||||||
val apiMajorVersion = appSettingsService.getApiVersion()
|
val apiMajorVersion = appSettingsService.getApiVersion()
|
||||||
|
|
||||||
@ -389,6 +390,8 @@ class Repository(private val api: SelfossApi, private val appSettingsService: Ap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: This should be private (since all api calls are made through the repository
|
||||||
|
// no other entity needs to know about the connectivity status)
|
||||||
fun isNetworkAvailable() = isConnectionAvailable.value && !offlineOverride
|
fun isNetworkAvailable() = isConnectionAvailable.value && !offlineOverride
|
||||||
|
|
||||||
private fun getDBActions(): List<ACTION> =
|
private fun getDBActions(): List<ACTION> =
|
||||||
@ -440,7 +443,7 @@ class Repository(private val api: SelfossApi, private val appSettingsService: Ap
|
|||||||
db.itemsQueries.updateItem(item.datetime, item.title.getHtmlDecoded(), item.content, item.unread, item.starred, item.thumbnail, item.icon, item.link, item.sourcetitle, item.tags.joinToString(","), item.id.toString())
|
db.itemsQueries.updateItem(item.datetime, item.title.getHtmlDecoded(), item.content, item.unread, item.starred, item.thumbnail, item.icon, item.link, item.sourcetitle, item.tags.joinToString(","), item.id.toString())
|
||||||
|
|
||||||
|
|
||||||
suspend fun tryToCacheItemsAndGetNewOnes(): List<SelfossModel.Item>? {
|
suspend fun tryToCacheItemsAndGetNewOnes(): List<SelfossModel.Item> {
|
||||||
try {
|
try {
|
||||||
val newItems = getMaxItemsForBackground(ItemType.UNREAD)
|
val newItems = getMaxItemsForBackground(ItemType.UNREAD)
|
||||||
val allItems = getMaxItemsForBackground(ItemType.ALL)
|
val allItems = getMaxItemsForBackground(ItemType.ALL)
|
||||||
|
@ -692,6 +692,82 @@ class RepositoryTest() {
|
|||||||
coVerify(exactly = 1) { api.refreshLoginInformation() }
|
coVerify(exactly = 1) { api.refreshLoginInformation() }
|
||||||
coVerify(exactly = 1) {appSettingsService.refreshLoginInformation("https://test.com/selfoss/", "login", "password")}
|
coVerify(exactly = 1) {appSettingsService.refreshLoginInformation("https://test.com/selfoss/", "login", "password")}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `cache items`() {
|
||||||
|
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
|
||||||
|
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
repository.tagFilter = SelfossModel.Tag("Tag", "read", 0)
|
||||||
|
repository.sourceFilter = SelfossModel.Source(
|
||||||
|
1,
|
||||||
|
"First source",
|
||||||
|
listOf("Test", "second"),
|
||||||
|
"spouts\\rss\\fulltextrss",
|
||||||
|
"",
|
||||||
|
"d8c92cdb1ef119ea85c4b9205c879ca7.png"
|
||||||
|
)
|
||||||
|
repository.searchFilter = "search"
|
||||||
|
var items = emptyList<SelfossModel.Item>()
|
||||||
|
runBlocking {
|
||||||
|
items = repository.tryToCacheItemsAndGetNewOnes()
|
||||||
|
}
|
||||||
|
|
||||||
|
coVerify(exactly = 3) { api.getItems(any(), 0, null, null, null, null, 200) }
|
||||||
|
assertSame(3, items.size)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `cache items but response fails`() {
|
||||||
|
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
|
||||||
|
SelfossModel.StatusAndData(success = false, data = generateTestApiItem())
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
repository.tagFilter = SelfossModel.Tag("Tag", "read", 0)
|
||||||
|
repository.sourceFilter = SelfossModel.Source(
|
||||||
|
1,
|
||||||
|
"First source",
|
||||||
|
listOf("Test", "second"),
|
||||||
|
"spouts\\rss\\fulltextrss",
|
||||||
|
"",
|
||||||
|
"d8c92cdb1ef119ea85c4b9205c879ca7.png"
|
||||||
|
)
|
||||||
|
repository.searchFilter = "search"
|
||||||
|
var items = emptyList<SelfossModel.Item>()
|
||||||
|
runBlocking {
|
||||||
|
items = repository.tryToCacheItemsAndGetNewOnes()
|
||||||
|
}
|
||||||
|
|
||||||
|
coVerify(exactly = 3) { api.getItems(any(), 0, null, null, null, null, 200) }
|
||||||
|
assertSame(0, items.size)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `cache items without connection`() {
|
||||||
|
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
|
||||||
|
SelfossModel.StatusAndData(success = false, data = generateTestApiItem())
|
||||||
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false)
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
repository.tagFilter = SelfossModel.Tag("Tag", "read", 0)
|
||||||
|
repository.sourceFilter = SelfossModel.Source(
|
||||||
|
1,
|
||||||
|
"First source",
|
||||||
|
listOf("Test", "second"),
|
||||||
|
"spouts\\rss\\fulltextrss",
|
||||||
|
"",
|
||||||
|
"d8c92cdb1ef119ea85c4b9205c879ca7.png"
|
||||||
|
)
|
||||||
|
repository.searchFilter = "search"
|
||||||
|
var items = emptyList<SelfossModel.Item>()
|
||||||
|
runBlocking {
|
||||||
|
items = repository.tryToCacheItemsAndGetNewOnes()
|
||||||
|
}
|
||||||
|
|
||||||
|
coVerify(exactly = 0) { api.getItems(any(), 0, null, null, null, null, 200) }
|
||||||
|
assertSame(emptyList<SelfossModel.Item>(), items)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateTestDBItems(item : FakeItemParameters = FakeItemParameters()) : List<ITEM> {
|
fun generateTestDBItems(item : FakeItemParameters = FakeItemParameters()) : List<ITEM> {
|
||||||
|
Loading…
Reference in New Issue
Block a user