krz/hutch

an ios client for sourcehut

clone: git clone https://gitbay.org/krz/hutch.git

v3.1.6: HutchTests/AppStateTests.swift · raw

 1import Testing
 2@testable import Hutch
 3
 4struct AppStateTests {
 5
 6    @Test
 7    @MainActor
 8    func presentRepositoryDeepLinkErrorSetsUserFacingMessage() {
 9        let appState = AppState()
10
11        appState.presentRepositoryDeepLinkError()
12
13        #expect(appState.deepLinkError == "The repository could not be found or is inaccessible.")
14    }
15
16    @Test
17    @MainActor
18    func presentTicketDeepLinkErrorSetsUserFacingMessage() {
19        let appState = AppState()
20
21        appState.presentTicketDeepLinkError()
22
23        #expect(appState.deepLinkError == "The ticket could not be found or is inaccessible.")
24    }
25
26    @Test
27    @MainActor
28    func openSystemStatusSelectsMoreTabAndQueuesNavigation() {
29        let appState = AppState()
30
31        appState.openSystemStatus()
32
33        #expect(appState.selectedTab == .more)
34        #expect(appState.pendingTabNavigation == .systemStatus)
35    }
36
37    @Test
38    @MainActor
39    func navigationHelpersQueueExpectedTargets() {
40        let appState = AppState()
41        let repository = RepositorySummary(
42            fields: .init(
43                id: 1,
44                rid: "repo",
45                service: .git,
46                name: "hutch",
47                description: nil,
48                visibility: .publicVisibility,
49                updated: .distantPast,
50                owner: Entity(canonicalName: "~owner"),
51                head: nil
52            )
53        )
54        let tracker = TrackerSummary(
55            id: 2,
56            rid: "tracker",
57            name: "todo",
58            description: nil,
59            visibility: .publicVisibility,
60            updated: .distantPast,
61            owner: Entity(canonicalName: "~owner")
62        )
63
64        appState.navigateToRepository(repository)
65        #expect(appState.selectedTab == .repositories)
66        #expect(appState.pendingTabNavigation == .repository(repository))
67
68        appState.navigateToTracker(tracker)
69        #expect(appState.selectedTab == .tickets)
70        #expect(appState.pendingTabNavigation == .tracker(tracker))
71
72        appState.navigateToBuild(jobId: 42)
73        #expect(appState.selectedTab == .builds)
74        #expect(appState.pendingDeepLink == .build(jobId: 42))
75
76        appState.navigateToTicket(ownerUsername: "owner", trackerName: "todo", ticketId: 9)
77        #expect(appState.selectedTab == .tickets)
78        #expect(appState.pendingDeepLink == .ticket(owner: "owner", tracker: "todo", ticketId: 9))
79    }
80}