feat: add conversation created event
This commit is contained in:
@@ -67,6 +67,23 @@ class ReportingEventListener < BaseListener
|
||||
reporting_event.save!
|
||||
end
|
||||
|
||||
def conversation_created(event)
|
||||
conversation = extract_conversation_and_account(event)[0]
|
||||
|
||||
reporting_event = ReportingEvent.new(
|
||||
name: 'conversation_created',
|
||||
value: 0,
|
||||
value_in_business_hours: 0,
|
||||
account_id: conversation.account_id,
|
||||
inbox_id: conversation.inbox_id,
|
||||
user_id: nil,
|
||||
conversation_id: conversation.id,
|
||||
event_start_time: conversation.created_at,
|
||||
event_end_time: conversation.created_at
|
||||
)
|
||||
reporting_event.save!
|
||||
end
|
||||
|
||||
def conversation_bot_handoff(event)
|
||||
conversation = extract_conversation_and_account(event)[0]
|
||||
|
||||
|
||||
@@ -10,6 +10,30 @@ describe ReportingEventListener do
|
||||
account: account, inbox: inbox, conversation: conversation)
|
||||
end
|
||||
|
||||
describe '#conversation_created' do
|
||||
it 'creates conversation_created event' do
|
||||
expect(account.reporting_events.where(name: 'conversation_created').count).to be 0
|
||||
event = Events::Base.new('conversation.created', Time.zone.now, conversation: conversation)
|
||||
listener.conversation_created(event)
|
||||
expect(account.reporting_events.where(name: 'conversation_created').count).to be 1
|
||||
|
||||
created_event = account.reporting_events.where(name: 'conversation_created').first
|
||||
expect(created_event.value).to eq 0
|
||||
expect(created_event.conversation_id).to eq conversation.id
|
||||
end
|
||||
|
||||
it 'creates conversation_created event when conversation is created' do
|
||||
# ensure gravatar job does not send a request
|
||||
stub_request(:get, /gravatar\.com/).to_return(status: 404, body: '', headers: {})
|
||||
|
||||
expect do
|
||||
perform_enqueued_jobs do
|
||||
create(:conversation, account: account, inbox: inbox)
|
||||
end
|
||||
end.to change { account.reporting_events.where(name: 'conversation_created').count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#conversation_resolved' do
|
||||
it 'creates conversation_resolved event' do
|
||||
expect(account.reporting_events.where(name: 'conversation_resolved').count).to be 0
|
||||
|
||||
Reference in New Issue
Block a user