summaryrefslogtreecommitdiff
path: root/HutchTests/ProjectFormTests.swift
blob: a4b4dfa144764b29adf2af98418793df8e551f95 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import Foundation
import Testing
@testable import Hutch

struct ProjectFormTests {
    @Test
    func parsesTagsSplittingAndTrimming() {
        #expect(ProjectFormSheet.parseTags("swift, ios ,  ") == ["swift", "ios"])
        #expect(ProjectFormSheet.parseTags("a,b,c") == ["a", "b", "c"])
    }

    @Test
    func parseTagsDeduplicatesCaseInsensitively() {
        #expect(ProjectFormSheet.parseTags("Swift, swift, SWIFT") == ["Swift"])
    }

    @Test
    func parseTagsEmptyInputYieldsEmpty() {
        #expect(ProjectFormSheet.parseTags("   ").isEmpty)
        #expect(ProjectFormSheet.parseTags("").isEmpty)
    }

    @Test
    func linkableResourceDisplayNameCombinesOwnerAndName() {
        let resource = LinkableResource(rid: "r1", name: "hutch", ownerCanonicalName: "~alice", kind: .source)
        #expect(resource.displayName == "~alice/hutch")
        #expect(resource.id == "r1")
    }

    @Test
    func discoveredProjectIDMatchesProject() {
        let project = Project(
            metadata: .init(id: "p1", name: "Hutch", description: nil, website: nil, visibility: .publicVisibility, tags: [], updated: .now),
            resources: .init(mailingLists: [], sources: [], trackers: [], isFullyLoaded: false)
        )
        let discovered = DiscoveredProject(project: project, ownerCanonicalName: "~alice")
        #expect(discovered.id == "p1")
    }
}