OXYGENHUB
# 3f3508bd5f16 oxygenhub-android / app / src / test / java / io / oxygenhub / android / FakeHubApi.kt
1.6 KiB · last changed The hub's API and device sign-in, the token in the Keystore (refs #2) 11 days ago source blame history raw
1
package io.oxygenhub.android
2
3
import io.oxygenhub.android.api.HubApi
4
import io.oxygenhub.android.api.Inbox
5
import io.oxygenhub.android.api.Issue
6
import io.oxygenhub.android.api.IssueState
7
import io.oxygenhub.android.api.Repository
8
import io.oxygenhub.android.api.User
9
10
/** A hub in memory: answers from the fixtures, or the failure set for a call. */
11
class FakeHubApi : HubApi {
12
    var user: () -> User = { Fixtures.user }
13
    var repositories: () -> List<Repository> = { Fixtures.repos }
14
    var issues: (IssueState) -> List<Issue> = { state ->
15
        Fixtures.issues.filter { state == IssueState.All || it.state == state.query }
16
    }
17
    var inbox: () -> Inbox = { Fixtures.inbox }
18
    var markRead: (Long) -> Unit = {}
19
    var markAllRead: () -> Unit = {}
20
    var revoke: () -> Unit = {}
21
22
    val calls = mutableListOf<String>()
23
24
    override suspend fun user(): User = user.invoke().also { calls += "user" }
25
    override suspend fun repositories(): List<Repository> = repositories.invoke().also { calls += "repos" }
26
    override suspend fun issues(owner: String, name: String, state: IssueState): List<Issue> =
27
        issues.invoke(state).also { calls += "issues $owner/$name ${state.query}" }
28
    override suspend fun inbox(limit: Int): Inbox = inbox.invoke().also { calls += "inbox" }
29
    override suspend fun markRead(id: Long) {
30
        calls += "read $id"
31
        markRead.invoke(id)
32
    }
33
    override suspend fun markAllRead() {
34
        calls += "read all"
35
        markAllRead.invoke()
36
    }
37
    override suspend fun revokeToken() {
38
        calls += "revoke"
39
        revoke.invoke()
40
    }
41
}