H-413: cover mismatched ContactInbox history (#74)
Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user