Test badge fetching
This commit is contained in:
parent
a4636cc0c8
commit
cda3ba6cb4
@ -12,7 +12,6 @@ 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() {
|
||||||
@ -21,8 +20,13 @@ class RepositoryTest() {
|
|||||||
private val appSettingsService = mockk<AppSettingsService>()
|
private val appSettingsService = mockk<AppSettingsService>()
|
||||||
private val api = mockk<SelfossApi>()
|
private val api = mockk<SelfossApi>()
|
||||||
|
|
||||||
|
private val NUMBER_ARTICLES = 100
|
||||||
|
private val NUMBER_UNREAD = 50
|
||||||
|
private val NUMBER_STARRED = 20
|
||||||
|
|
||||||
@BeforeTest
|
@BeforeTest
|
||||||
fun setup() {
|
fun setup() {
|
||||||
|
clearAllMocks()
|
||||||
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
|
||||||
@ -30,7 +34,7 @@ class RepositoryTest() {
|
|||||||
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(true)
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(true)
|
||||||
|
|
||||||
coEvery { api.version() } returns SelfossModel.ApiVersion("2.19-ba1e8e3", "4.0.0")
|
coEvery { api.version() } returns SelfossModel.ApiVersion("2.19-ba1e8e3", "4.0.0")
|
||||||
coEvery { api.stats() } returns SelfossModel.Stats(100, 50, 20)
|
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()
|
||||||
}
|
}
|
||||||
@ -191,6 +195,92 @@ class RepositoryTest() {
|
|||||||
coVerify(exactly = 1) { api.getItems("starred", 1, null, null, null, null, any()) }
|
coVerify(exactly = 1) { api.getItems("starred", 1, null, null, null, null, any()) }
|
||||||
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Reload badges`() {
|
||||||
|
var success = false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
runBlocking {
|
||||||
|
success = repository.reloadBadges()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(true, success)
|
||||||
|
assertSame(NUMBER_ARTICLES, repository.badgeAll)
|
||||||
|
assertSame(NUMBER_UNREAD, repository.badgeUnread)
|
||||||
|
assertSame(NUMBER_STARRED, repository.badgeStarred)
|
||||||
|
coVerify(atLeast = 1) { api.stats() }
|
||||||
|
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Reload badges without response`() {
|
||||||
|
coEvery { api.stats() } returns null
|
||||||
|
|
||||||
|
var success = false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
runBlocking {
|
||||||
|
success = repository.reloadBadges()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(false, success)
|
||||||
|
assertSame(0, repository.badgeAll)
|
||||||
|
assertSame(0, repository.badgeUnread)
|
||||||
|
assertSame(0, repository.badgeStarred)
|
||||||
|
coVerify(atLeast = 1) { api.stats() }
|
||||||
|
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Reload badges with items caching`() {
|
||||||
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false)
|
||||||
|
every { appSettingsService.isItemCachingEnabled() } returns true
|
||||||
|
|
||||||
|
val itemParameter = FakeItemParameters()
|
||||||
|
itemParameter.starred = true
|
||||||
|
itemParameter.unread = false
|
||||||
|
|
||||||
|
var success = false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
repository.items = ArrayList(generateTestApiItem(itemParameter))
|
||||||
|
runBlocking {
|
||||||
|
success = repository.reloadBadges()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(true, success)
|
||||||
|
assertSame(1, repository.badgeAll)
|
||||||
|
assertSame(0, repository.badgeUnread)
|
||||||
|
assertSame(1, repository.badgeStarred)
|
||||||
|
coVerify(exactly = 0) { api.stats() }
|
||||||
|
verify(atLeast = 1) { db.itemsQueries.items().executeAsList()}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Reload badges without items caching`() {
|
||||||
|
every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false)
|
||||||
|
every { appSettingsService.isItemCachingEnabled() } returns false
|
||||||
|
|
||||||
|
val itemParameter = FakeItemParameters()
|
||||||
|
itemParameter.starred = true
|
||||||
|
itemParameter.unread = false
|
||||||
|
|
||||||
|
var success = false
|
||||||
|
|
||||||
|
val repository = Repository(api, appSettingsService, connectivityStatus, db)
|
||||||
|
repository.items = ArrayList(generateTestApiItem(itemParameter))
|
||||||
|
runBlocking {
|
||||||
|
success = repository.reloadBadges()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(false, success)
|
||||||
|
assertSame(0, repository.badgeAll)
|
||||||
|
assertSame(0, repository.badgeUnread)
|
||||||
|
assertSame(0, repository.badgeStarred)
|
||||||
|
coVerify(exactly = 0) { api.stats() }
|
||||||
|
verify(exactly = 0) { db.itemsQueries.items().executeAsList()}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateTestDBItems(item : FakeItemParameters = FakeItemParameters()) : List<ITEM> {
|
fun generateTestDBItems(item : FakeItemParameters = FakeItemParameters()) : List<ITEM> {
|
||||||
@ -231,8 +321,8 @@ class FakeItemParameters() {
|
|||||||
var datetime = "2022-09-09T03:32:01-04:00"
|
var datetime = "2022-09-09T03:32:01-04:00"
|
||||||
val title = "Etica della ricerca sotto i riflettori."
|
val title = "Etica della ricerca sotto i riflettori."
|
||||||
val content = "<p><strong>Luigi Campanella, già Presidente SCI</strong></p>\n<p>L’etica della scienza è di certo ambito di cui continuiamo a scoprire nuovi aspetti e risvolti.</p>\n<p>L’ultimo è quello delle intelligenze artificiali capaci di creare opere complesse basate su immagini e parole memorizzate con il rischio di fake news e di contenuti disturbanti.</p>\n<p>Per evitare che ciò accada si sta procedendo filtrando secondo criteri di autocensura i dati da cui l’intelligenza artificiale parte.</p>\n<p>Comincia ad intravedersi un futuro prossimo di competizione fra autori umani ed artificiali nel quale sarà importante, quando i loro prodotti saranno indistinguibili, dichiararne l’origine.</p>\n<p>Come si comprende, si conferma che gli aspetti etici dell’innovazione e della ricerca si diversificato sempre di più.</p>\n<p>La biologia molecolare e la genetica già in passato hanno posto all’attenzione comune aspetti di etica della scienza che hanno indotto a nuove riflessioni circa i limiti delle ricerche.</p>\n<p>L’argomento, sempre attuale, torna sulle prime pagine a seguito della pubblicazione di una ricerca della Università di Cambridge che ha sviluppato una struttura cellulare di un topo con un cuore che batte regolarmente.</p>\n<img src=\"https://ilblogdellasci.files.wordpress.com/2022/09/image002-1.png?w=481\" alt=\"\" width=\"697\" height=\"430\" /><img src=\"https://ilblogdellasci.files.wordpress.com/2022/09/image003-1.png?w=906\" alt=\"\" /><p>Magdalena Zernicka-Goetz</p>\n<img src=\"https://ilblogdellasci.files.wordpress.com/2022/09/image004.jpg?w=474\" alt=\"\" width=\"622\" height=\"465\" /><p>Gianluca Amadei</p>\n<p>Del gruppo fa parte anche uno scienziato italiano Gianluca Amadei,che dinnanzi alle obiezioni di natura etica sulla realizzazione della vita artificiale si è affrettato a sostenere che non è creare nuove vite il fine primario della ricerca, ma quello di salvare quelle esistenti, di dare contributi essenziali alla medicina citando il caso del fallimento tuttora non interpretato di alcune gravidanze e di superare la sperimentazione animale, così contribuendo positivamente alla soluzione di un altro dilemma etico.</p>\n<p>L’embrione sintetico ha ovviamente come primo traguardo il contributo ai trapianti oggi drammaticamente carenti nell’offerta rispetto alla domanda, con attese fino a 4 anni per i trapianti di cuore ed a 2 anni per quelli di fegato. Il lavoro dovrebbe adesso continuare presso l’Ateneo di Padova per creare nuovi organi e nuovi farmaci.</p>"
|
val content = "<p><strong>Luigi Campanella, già Presidente SCI</strong></p>\n<p>L’etica della scienza è di certo ambito di cui continuiamo a scoprire nuovi aspetti e risvolti.</p>\n<p>L’ultimo è quello delle intelligenze artificiali capaci di creare opere complesse basate su immagini e parole memorizzate con il rischio di fake news e di contenuti disturbanti.</p>\n<p>Per evitare che ciò accada si sta procedendo filtrando secondo criteri di autocensura i dati da cui l’intelligenza artificiale parte.</p>\n<p>Comincia ad intravedersi un futuro prossimo di competizione fra autori umani ed artificiali nel quale sarà importante, quando i loro prodotti saranno indistinguibili, dichiararne l’origine.</p>\n<p>Come si comprende, si conferma che gli aspetti etici dell’innovazione e della ricerca si diversificato sempre di più.</p>\n<p>La biologia molecolare e la genetica già in passato hanno posto all’attenzione comune aspetti di etica della scienza che hanno indotto a nuove riflessioni circa i limiti delle ricerche.</p>\n<p>L’argomento, sempre attuale, torna sulle prime pagine a seguito della pubblicazione di una ricerca della Università di Cambridge che ha sviluppato una struttura cellulare di un topo con un cuore che batte regolarmente.</p>\n<img src=\"https://ilblogdellasci.files.wordpress.com/2022/09/image002-1.png?w=481\" alt=\"\" width=\"697\" height=\"430\" /><img src=\"https://ilblogdellasci.files.wordpress.com/2022/09/image003-1.png?w=906\" alt=\"\" /><p>Magdalena Zernicka-Goetz</p>\n<img src=\"https://ilblogdellasci.files.wordpress.com/2022/09/image004.jpg?w=474\" alt=\"\" width=\"622\" height=\"465\" /><p>Gianluca Amadei</p>\n<p>Del gruppo fa parte anche uno scienziato italiano Gianluca Amadei,che dinnanzi alle obiezioni di natura etica sulla realizzazione della vita artificiale si è affrettato a sostenere che non è creare nuove vite il fine primario della ricerca, ma quello di salvare quelle esistenti, di dare contributi essenziali alla medicina citando il caso del fallimento tuttora non interpretato di alcune gravidanze e di superare la sperimentazione animale, così contribuendo positivamente alla soluzione di un altro dilemma etico.</p>\n<p>L’embrione sintetico ha ovviamente come primo traguardo il contributo ai trapianti oggi drammaticamente carenti nell’offerta rispetto alla domanda, con attese fino a 4 anni per i trapianti di cuore ed a 2 anni per quelli di fegato. Il lavoro dovrebbe adesso continuare presso l’Ateneo di Padova per creare nuovi organi e nuovi farmaci.</p>"
|
||||||
val unread = true
|
var unread = true
|
||||||
val starred = true
|
var starred = true
|
||||||
val thumbnail = null
|
val thumbnail = null
|
||||||
val icon = "ba79e238383ce83c23a169929c8906ef.png"
|
val icon = "ba79e238383ce83c23a169929c8906ef.png"
|
||||||
val link = "https://ilblogdellasci.wordpress.com/2022/09/09/etica-della-ricerca-sotto-i-riflettori/"
|
val link = "https://ilblogdellasci.wordpress.com/2022/09/09/etica-della-ricerca-sotto-i-riflettori/"
|
||||||
|
Loading…
Reference in New Issue
Block a user