diff options
| author | Christian Cleberg <[email protected]> | 2026-04-20 13:15:04 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-20 13:15:04 -0500 |
| commit | 380fb866d090c5f13b2ad3f88f1fe23c4ade4801 (patch) | |
| tree | dfb90664e32c5f318a2fd1f107fed5ad9fff6e78 /HutchTests/HomeViewModelTests.swift | |
| parent | 8b73fd9cd43753b36b3ab3ca5e4dc83a47ea3480 (diff) | |
| download | hutch-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.swift | 52 |
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, |
