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}