feat: Ability to snooze conversations (#2682)
Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
co-authored by
Pranav Raj S
parent
4d45ac3bfc
commit
d955d8e7dc
@@ -181,14 +181,38 @@ RSpec.describe Conversation, type: :model do
|
||||
end
|
||||
|
||||
describe '#toggle_status' do
|
||||
subject(:toggle_status) { conversation.toggle_status }
|
||||
|
||||
let(:conversation) { create(:conversation, status: :open) }
|
||||
|
||||
it 'toggles conversation status' do
|
||||
expect(toggle_status).to eq(true)
|
||||
it 'toggles conversation status to resolved when open' do
|
||||
conversation = create(:conversation, status: 'open')
|
||||
expect(conversation.toggle_status).to eq(true)
|
||||
expect(conversation.reload.status).to eq('resolved')
|
||||
end
|
||||
|
||||
it 'toggles conversation status to open when resolved' do
|
||||
conversation = create(:conversation, status: 'resolved')
|
||||
expect(conversation.toggle_status).to eq(true)
|
||||
expect(conversation.reload.status).to eq('open')
|
||||
end
|
||||
|
||||
it 'toggles conversation status to open when pending' do
|
||||
conversation = create(:conversation, status: 'pending')
|
||||
expect(conversation.toggle_status).to eq(true)
|
||||
expect(conversation.reload.status).to eq('open')
|
||||
end
|
||||
|
||||
it 'toggles conversation status to open when snoozed' do
|
||||
conversation = create(:conversation, status: 'snoozed')
|
||||
expect(conversation.toggle_status).to eq(true)
|
||||
expect(conversation.reload.status).to eq('open')
|
||||
end
|
||||
end
|
||||
|
||||
describe '#ensure_snooze_until_reset' do
|
||||
it 'resets the snoozed_until when status is toggled' do
|
||||
conversation = create(:conversation, status: 'snoozed', snoozed_until: 2.days.from_now)
|
||||
expect(conversation.snoozed_until).not_to eq nil
|
||||
expect(conversation.toggle_status).to eq(true)
|
||||
expect(conversation.reload.snoozed_until).to eq(nil)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#mute!' do
|
||||
|
||||
@@ -9,6 +9,30 @@ RSpec.describe Message, type: :model do
|
||||
it { is_expected.to validate_presence_of(:account_id) }
|
||||
end
|
||||
|
||||
describe '#reopen_conversation' do
|
||||
let(:conversation) { create(:conversation) }
|
||||
let(:message) { build(:message, message_type: :incoming, conversation: conversation) }
|
||||
|
||||
it 'reopens resolved conversation when the message is from a contact' do
|
||||
conversation.resolved!
|
||||
message.save!
|
||||
expect(message.conversation.open?).to eq true
|
||||
end
|
||||
|
||||
it 'reopens snoozed conversation when the message is from a contact' do
|
||||
conversation.snoozed!
|
||||
message.save!
|
||||
expect(message.conversation.open?).to eq true
|
||||
end
|
||||
|
||||
it 'will not reopen if the conversation is muted' do
|
||||
conversation.resolved!
|
||||
conversation.mute!
|
||||
message.save!
|
||||
expect(message.conversation.open?).to eq false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when message is created' do
|
||||
let(:message) { build(:message, account: create(:account)) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user