diff --git a/spec/models/conversation_spec.rb b/spec/models/conversation_spec.rb index ce7b92028..5813d8c3c 100644 --- a/spec/models/conversation_spec.rb +++ b/spec/models/conversation_spec.rb @@ -882,4 +882,39 @@ RSpec.describe Conversation do expect(conversation.cached_label_list_array).to eq %w[customer-support enterprise paid-customer] end end + + describe '#last_activity_at' do + let(:conversation) { create(:conversation) } + let(:message_params) do + { + conversation: conversation, + account: conversation.account, + inbox: conversation.inbox, + sender: conversation.assignee + } + end + + context 'when a new conversation is created' do + it 'sets last_activity_at to the created_at time' do + expect(conversation.last_activity_at).to eq(conversation.created_at) + end + end + + context 'when a new message is added' do + it 'updates the last_activity_at to the new message\'s created_at time' do + message = create(:message, created_at: 1.hour.from_now, **message_params) + conversation.reload + expect(conversation.last_activity_at).to be_within(1.second).of(message.created_at) + end + end + + context 'when multiple messages are added' do + it 'sets last_activity_at to the most recent message\'s created_at time' do + create(:message, created_at: 2.hours.ago, **message_params) + latest_message = create(:message, created_at: 1.hour.from_now, **message_params) + conversation.reload + expect(conversation.last_activity_at).to be_within(1.second).of(latest_message.created_at) + end + end + end end