summaryrefslogtreecommitdiff
path: root/HutchTests
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-12 22:06:16 -0500
committerChristian Cleberg <[email protected]>2026-04-12 22:06:16 -0500
commit86bcd9452d3107f68aca085e03e69b02667c0dbb (patch)
tree8b0adece5cb0f8ffb178eaab2cd12d025c9ebf0a /HutchTests
parent31cbca674957eea7ae2529012e20a9d95158e561 (diff)
downloadhutch-86bcd9452d3107f68aca085e03e69b02667c0dbb.tar.gz
hutch-86bcd9452d3107f68aca085e03e69b02667c0dbb.tar.bz2
hutch-86bcd9452d3107f68aca085e03e69b02667c0dbb.zip
feat: polish read-only project views and home integration
Refs: https://todo.sr.ht/~ccleberg/hutch/36 Refs: https://todo.sr.ht/~ccleberg/hutch/37 Refs: https://todo.sr.ht/~ccleberg/hutch/38
Diffstat (limited to 'HutchTests')
-rw-r--r--HutchTests/ProjectPinStoreTests.swift13
-rw-r--r--HutchTests/ProjectTests.swift21
2 files changed, 34 insertions, 0 deletions
diff --git a/HutchTests/ProjectPinStoreTests.swift b/HutchTests/ProjectPinStoreTests.swift
index a4ee0f7..17b4397 100644
--- a/HutchTests/ProjectPinStoreTests.swift
+++ b/HutchTests/ProjectPinStoreTests.swift
@@ -25,4 +25,17 @@ struct ProjectPinStoreTests {
#expect(ProjectPinStore.loadPinnedProjectIDs(for: "~alice", defaults: defaults).isEmpty)
}
+
+ @Test
+ func loadPinnedProjectsNormalizesWhitespaceAndDuplicates() {
+ let defaults = UserDefaults(suiteName: #function)!
+ defaults.removePersistentDomain(forName: #function)
+
+ let encoded = try! JSONEncoder().encode([
+ "~alice": [" project-1 ", "", "project-1", "project-2"]
+ ])
+ defaults.set(encoded, forKey: AppStorageKeys.pinnedHomeProjects)
+
+ #expect(ProjectPinStore.loadPinnedProjectIDs(for: "~alice", defaults: defaults) == ["project-1", "project-2"])
+ }
}
diff --git a/HutchTests/ProjectTests.swift b/HutchTests/ProjectTests.swift
index b47356e..eff800f 100644
--- a/HutchTests/ProjectTests.swift
+++ b/HutchTests/ProjectTests.swift
@@ -71,4 +71,25 @@ struct ProjectTests {
#expect(project.resourceSummary == "Website linked")
}
+
+ @Test
+ func displayHelpersNormalizeBlankValues() {
+ let project = Project(
+ id: "project-1",
+ name: " ",
+ description: "\n",
+ website: "https://example.com",
+ visibility: .unlisted,
+ tags: [" docs ", "", "Docs", "ios"],
+ updated: Date(timeIntervalSince1970: 0),
+ mailingLists: [],
+ sources: [],
+ trackers: []
+ )
+
+ #expect(project.displayName == "Untitled Project")
+ #expect(project.displayDescription == nil)
+ #expect(project.displayTags == ["docs", "ios"])
+ #expect(project.metadataLine.contains("Unlisted"))
+ }
}