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