| 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 |
} |