krz/hutch

an ios client for sourcehut

clone: git clone https://gitbay.org/krz/hutch.git

main: HutchTests/RecentActivityStoreTests.swift · raw

 1import Foundation
 2import Testing
 3@testable import Hutch
 4
 5@MainActor
 6struct RecentActivityStoreTests {
 7    @Test
 8    func removeDropsMatchingEntryKeepingOthers() {
 9        let defaults = UserDefaults(suiteName: #function)!
10        defaults.removePersistentDomain(forName: #function)
11
12        RecentActivityStore.recordBuild(jobId: 1, title: "Build 1", defaults: defaults)
13        RecentActivityStore.recordBuild(jobId: 2, title: "Build 2", defaults: defaults)
14
15        RecentActivityStore.remove(id: "build:1", defaults: defaults)
16
17        let remaining = RecentActivityStore.load(defaults: defaults)
18        #expect(remaining.map(\.id) == ["build:2"])
19    }
20
21    @Test
22    func clearRemovesAllEntries() {
23        let defaults = UserDefaults(suiteName: #function)!
24        defaults.removePersistentDomain(forName: #function)
25
26        RecentActivityStore.recordBuild(jobId: 1, title: "Build 1", defaults: defaults)
27        RecentActivityStore.recordTicket(
28            ownerUsername: "~alice",
29            trackerName: "hutch",
30            ticketId: 42,
31            title: "A ticket",
32            defaults: defaults
33        )
34
35        RecentActivityStore.clear(defaults: defaults)
36
37        #expect(RecentActivityStore.load(defaults: defaults).isEmpty)
38    }
39}