krz/hutch
an ios client for sourcehut
clone: git clone https://gitbay.org/krz/hutch.git
v3.1.7: 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}