summaryrefslogtreecommitdiff
path: root/HutchTests/HomeViewModelTests.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-20 13:15:04 -0500
committerChristian Cleberg <[email protected]>2026-04-20 13:15:04 -0500
commit380fb866d090c5f13b2ad3f88f1fe23c4ade4801 (patch)
treedfb90664e32c5f318a2fd1f107fed5ad9fff6e78 /HutchTests/HomeViewModelTests.swift
parent8b73fd9cd43753b36b3ab3ca5e4dc83a47ea3480 (diff)
downloadhutch-3.2.0.tar.gz
hutch-3.2.0.tar.bz2
hutch-3.2.0.zip
fix: collapse work inbox messages into thread summariesv3.2.0
Diffstat (limited to 'HutchTests/HomeViewModelTests.swift')
-rw-r--r--HutchTests/HomeViewModelTests.swift52
1 files changed, 52 insertions, 0 deletions
diff --git a/HutchTests/HomeViewModelTests.swift b/HutchTests/HomeViewModelTests.swift
index fe4229f..e4f6d9a 100644
--- a/HutchTests/HomeViewModelTests.swift
+++ b/HutchTests/HomeViewModelTests.swift
@@ -90,6 +90,58 @@ struct HomeViewModelTests {
}
@Test
+ func deduplicateInboxThreadsCollapsesMessagesIntoOneThreadSummary() {
+ let list = InboxMailingListReference(
+ id: 1,
+ rid: "list",
+ name: "hutch-devel",
+ owner: Entity(canonicalName: "~owner")
+ )
+ let first = InboxThreadSummary(
+ rootEmailID: 10,
+ rootMessageID: "message-1",
+ threadRootEmailIDs: [10],
+ threadRootMessageIDs: ["message-1"],
+ listID: list.id,
+ listRID: list.rid,
+ listName: list.name,
+ listOwner: list.owner,
+ subject: "Re: [PATCH] add search",
+ latestSender: Entity(canonicalName: "~alice"),
+ lastActivityAt: Date(timeIntervalSince1970: 100),
+ messageCount: 1,
+ repo: "hutch",
+ containsPatch: true,
+ isUnread: true
+ )
+ let second = InboxThreadSummary(
+ rootEmailID: 11,
+ rootMessageID: "message-2",
+ threadRootEmailIDs: [11],
+ threadRootMessageIDs: ["message-2"],
+ listID: list.id,
+ listRID: list.rid,
+ listName: list.name,
+ listOwner: list.owner,
+ subject: "[PATCH] add search",
+ latestSender: Entity(canonicalName: "~bob"),
+ lastActivityAt: Date(timeIntervalSince1970: 200),
+ messageCount: 2,
+ repo: "hutch",
+ containsPatch: true,
+ isUnread: true
+ )
+
+ let deduplicated = HomeViewModel.deduplicateInboxThreads([first, second])
+
+ #expect(deduplicated.count == 1)
+ #expect(deduplicated[0].rootEmailID == 11)
+ #expect(deduplicated[0].threadRootEmailIDs == [10, 11])
+ #expect(deduplicated[0].threadRootMessageIDs == ["message-1", "message-2"])
+ #expect(deduplicated[0].messageCount == 2)
+ }
+
+ @Test
func matchesCurrentUserAssigneeNormalizesCanonicalNameAndUsername() {
let currentUser = User(
id: 42,