diff options
| author | Christian Cleberg <[email protected]> | 2026-04-13 19:44:44 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-13 19:44:44 -0500 |
| commit | fe1ccc69661603d419a642a450e4ac9e1258adb0 (patch) | |
| tree | 386455b6b5468abdd9dfa46dd4802b10da8b77a2 /HutchTests/SRHTWebURLTests.swift | |
| parent | 6ec9754ce34f331641b000eddef3d44bca2631a5 (diff) | |
| download | hutch-3.1.3.tar.gz hutch-3.1.3.tar.bz2 hutch-3.1.3.zip | |
fix: centralize URLs, tighten models, and polish SwiftUI bindingsv3.1.3
- Add shared HutchDeepLinkURL constants for app, widgets, and tests.
- Bump marketing version to 3.1.2 and build to 70 (app + widget extension).
- Point Hutch stats default base URL at HutchStatsAPI; add SRHTWebURL status
incident feed and reuse it from SystemStatusService.
- Group Project into Metadata and Resources; split ContributionStatsResponse
into StatsWindow and StatsTotals with updated decoding and tests.
- Replace @Bindable usage with explicit Bindings in Profile, Projects list,
and repository ACL flows; simplify Home pinned-item helper; add no-op
bodies on cancel alert buttons where the compiler requires a statement.
- Move repository row build-status indicator next to the relative-updated
caption and reserve a fixed 8×8 slot so the row does not jump when status
loads.
- Use NSString.lastPathComponent for build artifact filenames; collapse
duplicate ACL error branches; minor HutchStats HTTP and XMLParserDelegate
cleanups.
- Point widgets at HutchDeepLinkURL helpers; align tests with the new
response and URL types.
Diffstat (limited to 'HutchTests/SRHTWebURLTests.swift')
| -rw-r--r-- | HutchTests/SRHTWebURLTests.swift | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/HutchTests/SRHTWebURLTests.swift b/HutchTests/SRHTWebURLTests.swift index a183f00..c1f0dc0 100644 --- a/HutchTests/SRHTWebURLTests.swift +++ b/HutchTests/SRHTWebURLTests.swift @@ -3,6 +3,16 @@ import Testing @testable import Hutch struct SRHTWebURLTests { + private enum Expected { + static let chatOrigin = "https://chat.sr.ht" + static let statusOrigin = "https://status.sr.ht" + static let gitRepoHTTPS = "https://git.sr.ht/~ccleberg/hutch" + static let gitSSH = "[email protected]:~ccleberg/hutch" + static let tracker = "https://todo.sr.ht/~ccleberg/todo" + static let ticket = "https://todo.sr.ht/~ccleberg/todo/42" + static let buildJob = "https://builds.sr.ht/~ccleberg/job/12" + } + private let repository = RepositorySummary( id: 1, rid: "repo-1", @@ -26,21 +36,21 @@ struct SRHTWebURLTests { @Test func browserOnlyServiceURLsUseCanonicalHosts() { - #expect(SRHTWebURL.chat.absoluteString == "https://chat.sr.ht") - #expect(SRHTWebURL.status.absoluteString == "https://status.sr.ht") + #expect(SRHTWebURL.chat.absoluteString == Expected.chatOrigin) + #expect(SRHTWebURL.status.absoluteString == Expected.statusOrigin) } @Test func repositoryAndCloneURLsUseStableUserScopedPaths() { - #expect(SRHTWebURL.repository(repository)?.absoluteString == "https://git.sr.ht/~ccleberg/hutch") - #expect(SRHTWebURL.httpsCloneURL(repository) == "https://git.sr.ht/~ccleberg/hutch") - #expect(SRHTWebURL.sshCloneURL(repository) == "[email protected]:~ccleberg/hutch") + #expect(SRHTWebURL.repository(repository)?.absoluteString == Expected.gitRepoHTTPS) + #expect(SRHTWebURL.httpsCloneURL(repository) == Expected.gitRepoHTTPS) + #expect(SRHTWebURL.sshCloneURL(repository) == Expected.gitSSH) } @Test func trackerTicketAndBuildURLsUseStableUserScopedPaths() { - #expect(SRHTWebURL.tracker(tracker)?.absoluteString == "https://todo.sr.ht/~ccleberg/todo") - #expect(SRHTWebURL.ticket(ownerUsername: "ccleberg", trackerName: "todo", ticketId: 42)?.absoluteString == "https://todo.sr.ht/~ccleberg/todo/42") - #expect(SRHTWebURL.build(jobId: 12, ownerCanonicalName: "~ccleberg")?.absoluteString == "https://builds.sr.ht/~ccleberg/job/12") + #expect(SRHTWebURL.tracker(tracker)?.absoluteString == Expected.tracker) + #expect(SRHTWebURL.ticket(ownerUsername: "ccleberg", trackerName: "todo", ticketId: 42)?.absoluteString == Expected.ticket) + #expect(SRHTWebURL.build(jobId: 12, ownerCanonicalName: "~ccleberg")?.absoluteString == Expected.buildJob) } } |
