summaryrefslogtreecommitdiff
path: root/HutchTests/TicketListViewModelTests.swift
diff options
context:
space:
mode:
Diffstat (limited to 'HutchTests/TicketListViewModelTests.swift')
-rw-r--r--HutchTests/TicketListViewModelTests.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/HutchTests/TicketListViewModelTests.swift b/HutchTests/TicketListViewModelTests.swift
index 0f42bf8..a237071 100644
--- a/HutchTests/TicketListViewModelTests.swift
+++ b/HutchTests/TicketListViewModelTests.swift
@@ -2,6 +2,7 @@ import Foundation
import Testing
@testable import Hutch
+@MainActor
struct TicketListViewModelTests {
@Test
@@ -82,6 +83,43 @@ struct TicketListViewModelTests {
}
@Test
+ func synchronizeTicketsReplacesEditedLabelsAndRemovesDeletedOnes() {
+ let existing = [
+ makeTicket(
+ id: 7,
+ title: "Triage me",
+ status: .reported,
+ submitter: "~owner",
+ labels: [
+ makeLabel(id: 1, name: "bug"),
+ makeLabel(id: 2, name: "stale")
+ ]
+ )
+ ]
+
+ let updated = TicketListViewModel.synchronizeTickets(
+ existing,
+ with: [makeLabel(id: 1, name: "bugfix")]
+ )
+
+ #expect(updated.first?.labels.map(\.id) == [1])
+ #expect(updated.first?.labels.first?.name == "bugfix")
+ }
+
+ @Test
+ func reconciledSelectedLabelIDsRemovesUnknownIDs() {
+ let reconciled = TicketListViewModel.reconciledSelectedLabelIDs(
+ [1, 2, 5],
+ availableLabels: [
+ makeLabel(id: 2, name: "triage"),
+ makeLabel(id: 3, name: "qa")
+ ]
+ )
+
+ #expect(reconciled == [2])
+ }
+
+ @Test
@MainActor
func resolveTicketInputHasCorrectStatusAndDefaultResolution() {
let input: [String: any Sendable] = [