krz/hutch
an ios client for sourcehut
clone: git clone https://gitbay.org/krz/hutch.git
main: HutchTests/ProjectFormTests.swift · raw
1import Foundation
2import Testing
3@testable import Hutch
4
5@MainActor
6struct ProjectFormTests {
7 @Test
8 func parsesTagsSplittingAndTrimming() {
9 #expect(ProjectFormSheet.parseTags("swift, ios , ") == ["swift", "ios"])
10 #expect(ProjectFormSheet.parseTags("a,b,c") == ["a", "b", "c"])
11 }
12
13 @Test
14 func parseTagsDeduplicatesCaseInsensitively() {
15 #expect(ProjectFormSheet.parseTags("Swift, swift, SWIFT") == ["Swift"])
16 }
17
18 @Test
19 func parseTagsEmptyInputYieldsEmpty() {
20 #expect(ProjectFormSheet.parseTags(" ").isEmpty)
21 #expect(ProjectFormSheet.parseTags("").isEmpty)
22 }
23
24 @Test
25 func linkableResourceDisplayNameCombinesOwnerAndName() {
26 let resource = LinkableResource(rid: "r1", name: "hutch", ownerCanonicalName: "~alice", kind: .source)
27 #expect(resource.displayName == "~alice/hutch")
28 #expect(resource.id == "r1")
29 }
30
31 @Test
32 func discoveredProjectIDMatchesProject() {
33 let project = Project(
34 metadata: .init(id: "p1", name: "Hutch", description: nil, website: nil, visibility: .publicVisibility, tags: [], updated: .now),
35 resources: .init(mailingLists: [], sources: [], trackers: [], isFullyLoaded: false)
36 )
37 let discovered = DiscoveredProject(project: project, ownerCanonicalName: "~alice")
38 #expect(discovered.id == "p1")
39 }
40}