feat: Ability to snooze conversations (#2682)

Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
Sojan Jose
2021-07-23 15:24:07 +05:30
committed by GitHub
co-authored by Pranav Raj S
parent 4d45ac3bfc
commit d955d8e7dc
21 changed files with 270 additions and 26 deletions
+30 -6
View File
@@ -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
+24
View File
@@ -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)) }