From 1afe9dddeb9803917b6c8f6df69ef0412896d409 Mon Sep 17 00:00:00 2001 From: Rogee Date: Fri, 21 Aug 2026 13:49:11 +0800 Subject: [PATCH] H-413: cover mismatched ContactInbox history (#74) Co-authored-by: Rogee --- .../repository/conversation_repo_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/backend/internal/repository/conversation_repo_test.go b/backend/internal/repository/conversation_repo_test.go index 745d1744..483d60d6 100644 --- a/backend/internal/repository/conversation_repo_test.go +++ b/backend/internal/repository/conversation_repo_test.go @@ -63,21 +63,37 @@ func TestConversationRepo_FindByContactInboxIncludesLegacyOnlyWhenAllowed(t *tes repo := NewConversationRepo(db) account := &model.Account{Name: "Widget identity account", Active: true} require.NoError(t, db.Create(account).Error) + otherAccount := &model.Account{Name: "Other widget identity account", Active: true} + require.NoError(t, db.Create(otherAccount).Error) inbox := &model.Inbox{AccountID: account.ID, Name: "Widget", ChannelType: "web_widget"} require.NoError(t, db.Create(inbox).Error) + otherInbox := &model.Inbox{AccountID: account.ID, Name: "Other widget", ChannelType: "web_widget"} + require.NoError(t, db.Create(otherInbox).Error) contact := &model.Contact{AccountID: account.ID, Name: "Visitor"} require.NoError(t, db.Create(contact).Error) + otherContact := &model.Contact{AccountID: account.ID, Name: "Other visitor"} + require.NoError(t, db.Create(otherContact).Error) contactInbox := &model.ContactInbox{ContactID: contact.ID, InboxID: inbox.ID, PubsubToken: "token-a"} require.NoError(t, db.Create(contactInbox).Error) legacy := createTestConversation(t, db, account.ID, inbox.ID, contact.ID, "open") owned := createTestConversation(t, db, account.ID, inbox.ID, contact.ID, "open") require.NoError(t, db.Model(owned).Update("contact_inbox_id", contactInbox.ID).Error) + wrongAccount := createTestConversation(t, db, otherAccount.ID, inbox.ID, contact.ID, "open") + require.NoError(t, db.Model(wrongAccount).Update("contact_inbox_id", contactInbox.ID).Error) + createTestConversation(t, db, account.ID, inbox.ID, otherContact.ID, "open") + createTestConversation(t, db, account.ID, otherInbox.ID, contact.ID, "open") conversations, total, err := repo.FindByContactInbox(context.Background(), account.ID, contact.ID, inbox.ID, contactInbox.ID, true, 0, 10) require.NoError(t, err) assert.Equal(t, int64(2), total) assert.ElementsMatch(t, []uint{legacy.ID, owned.ID}, []uint{conversations[0].ID, conversations[1].ID}) + latest, total, err := repo.FindByContactInbox(context.Background(), account.ID, contact.ID, inbox.ID, contactInbox.ID, true, 0, 1) + require.NoError(t, err) + assert.Equal(t, int64(2), total) + require.Len(t, latest, 1) + assert.Equal(t, owned.ID, latest[0].ID) + conversations, total, err = repo.FindByContactInbox(context.Background(), account.ID, contact.ID, inbox.ID, contactInbox.ID, false, 0, 10) require.NoError(t, err) assert.Equal(t, int64(1), total)