OXYGENHUB
# c53e328b2db4 oxygenhub-android / app / src / test / java / io / oxygenhub / android / ui / ReleasesAndSearchTest.kt
1.7 KiB · last changed Releases and search on the phone (refs #3) 10 days ago source blame history raw
1
package io.oxygenhub.android.ui
2
3
import io.oxygenhub.android.FakeHubApi
4
import io.oxygenhub.android.MainDispatcherRule
5
import io.oxygenhub.android.api.HubException
6
import io.oxygenhub.android.api.Release
7
import io.oxygenhub.android.api.SearchHit
8
import io.oxygenhub.android.ui.common.Load
9
import io.oxygenhub.android.ui.releases.ReleasesViewModel
10
import io.oxygenhub.android.ui.releases.SearchViewModel
11
import org.junit.Assert.assertEquals
12
import org.junit.Assert.assertNull
13
import org.junit.Assert.assertTrue
14
import org.junit.Rule
15
import org.junit.Test
16
17
class ReleasesAndSearchTest {
18
    @get:Rule val main = MainDispatcherRule()
19
20
    private val api = FakeHubApi()
21
22
    @Test
23
    fun releasesNewestFirst() {
24
        api.releaseList = listOf(Release("v0.9.3", createdMs = 1), Release("v0.9.4", createdMs = 2))
25
        val tags = (ReleasesViewModel(api, "andymccall", "oxygenhub").state.value as Load.Ready).value.map { it.tag }
26
        assertEquals(listOf("v0.9.4", "v0.9.3"), tags)
27
    }
28
29
    @Test
30
    fun searchFindsIssuesAndProposalsAndSaysWhenItFails() {
31
        api.hits = { q -> if (q == "board") listOf(SearchHit("issue", "andymccall/oxygenhub", 293, "Boards that keep growing")) else throw HubException.Http(500, "down") }
32
        val vm = SearchViewModel(api)
33
        assertNull("nothing searched yet", vm.state.value)
34
        vm.search("   ")
35
        assertNull("a blank search is no search", vm.state.value)
36
        vm.search(" board ")
37
        val hits = (vm.state.value as Load.Ready).value
38
        assertEquals(listOf(293L), hits.map { it.number })
39
        assertEquals("andymccall" to "oxygenhub", hits[0].owner to hits[0].name)
40
        assertTrue("search board" in api.calls)
41
        vm.search("fails")
42
        assertTrue(vm.state.value is Load.Failed)
43
    }
44
}