summaryrefslogtreecommitdiff
path: root/HutchTests
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-12 19:58:20 -0500
committerChristian Cleberg <[email protected]>2026-04-12 19:58:20 -0500
commit9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a (patch)
treebf7a249bec3b9aba18176e6139d690c9bf384ab5 /HutchTests
parent1354f2464180ece6d13296a543a964ddf6d2d393 (diff)
downloadhutch-9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a.tar.gz
hutch-9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a.tar.bz2
hutch-9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a.zip
feat: add projects list, detail view, and home pinning
Implements: https://todo.sr.ht/~ccleberg/hutch/26 Implements: https://todo.sr.ht/~ccleberg/hutch/27 Implements: https://todo.sr.ht/~ccleberg/hutch/28
Diffstat (limited to 'HutchTests')
-rw-r--r--HutchTests/ProjectPinStoreTests.swift28
1 files changed, 28 insertions, 0 deletions
diff --git a/HutchTests/ProjectPinStoreTests.swift b/HutchTests/ProjectPinStoreTests.swift
new file mode 100644
index 0000000..a4ee0f7
--- /dev/null
+++ b/HutchTests/ProjectPinStoreTests.swift
@@ -0,0 +1,28 @@
+import Foundation
+import Testing
+@testable import Hutch
+
+struct ProjectPinStoreTests {
+ @Test
+ func storesPinnedProjectsPerUser() {
+ let defaults = UserDefaults(suiteName: #function)!
+ defaults.removePersistentDomain(forName: #function)
+
+ ProjectPinStore.togglePin(projectID: "project-1", for: "~alice", defaults: defaults)
+ ProjectPinStore.togglePin(projectID: "project-2", for: "~bob", defaults: defaults)
+
+ #expect(ProjectPinStore.loadPinnedProjectIDs(for: "~alice", defaults: defaults) == ["project-1"])
+ #expect(ProjectPinStore.loadPinnedProjectIDs(for: "~bob", defaults: defaults) == ["project-2"])
+ }
+
+ @Test
+ func toggleRemovesExistingPin() {
+ let defaults = UserDefaults(suiteName: #function)!
+ defaults.removePersistentDomain(forName: #function)
+
+ ProjectPinStore.togglePin(projectID: "project-1", for: "~alice", defaults: defaults)
+ ProjectPinStore.togglePin(projectID: "project-1", for: "~alice", defaults: defaults)
+
+ #expect(ProjectPinStore.loadPinnedProjectIDs(for: "~alice", defaults: defaults).isEmpty)
+ }
+}