OXYGENHUB
# 6823c243eaac oxygenhub-android / app / src / test / java / io / oxygenhub / android / ui / ProposalFilesTest.kt
1.3 KiB · last changed A proposal's files and their diffs: Files changed from its Changes section, the change screen's diff list shared (refs #4) 8 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.DiffLine
6
import io.oxygenhub.android.api.FileChange
7
import io.oxygenhub.android.api.HubException
8
import io.oxygenhub.android.ui.common.Load
9
import io.oxygenhub.android.ui.proposals.ProposalFilesViewModel
10
import org.junit.Assert.assertEquals
11
import org.junit.Assert.assertTrue
12
import org.junit.Rule
13
import org.junit.Test
14
15
class ProposalFilesTest {
16
    @get:Rule val main = MainDispatcherRule()
17
18
    private val api = FakeHubApi()
19
20
    @Test
21
    fun aProposalsFilesComeWithTheirDiffs() {
22
        api.proposalDiff = {
23
            listOf(FileChange(path = "a.txt", kind = "modified", added = 1, lines = listOf(DiffLine("context", 1, 1, "a"), DiffLine("add", null, 2, "A"))))
24
        }
25
        val files = (ProposalFilesViewModel(api, "andy", "demo", 2).state.value as Load.Ready).value
26
        assertEquals(listOf("a.txt"), files.map { it.path })
27
        assertEquals(listOf("context", "add"), files[0].lines.map { it.kind })
28
        assertTrue("proposalDiff" in api.calls)
29
    }
30
31
    @Test
32
    fun aHubWithoutTheDiffSaysSo() {
33
        api.proposalDiff = { throw HubException.Http(404, "no such route") }
34
        assertTrue(ProposalFilesViewModel(api, "andy", "demo", 2).state.value is Load.Failed)
35
    }
36
}