mirror of
https://github.com/lingble/chatwoot.git
synced 2026-03-20 03:52:43 +00:00
fix: calculation for resolution count (#7293)
* fix: calculation for resolution count * test: resolution count bug fix - ensure enqueued jobs are run - fix the dates check, conversations resolved today should show up in today * feat: ensure conversations are resolved * test: do not count extra events if the conversation is not resolved currently * fix: typo
This commit is contained in:
@@ -29,7 +29,9 @@ module ReportHelper
|
||||
end
|
||||
|
||||
def resolutions_count
|
||||
(get_grouped_values scope.conversations.where(account_id: account.id).resolved).count
|
||||
object_scope = scope.reporting_events.joins(:conversation).select(:conversation_id).where(account_id: account.id, name: :conversation_resolved,
|
||||
conversations: { status: :resolved }).distinct
|
||||
(get_grouped_values object_scope).count
|
||||
end
|
||||
|
||||
def avg_first_response_time
|
||||
|
||||
@@ -106,12 +106,20 @@ describe V2::ReportBuilder do
|
||||
}
|
||||
|
||||
conversations = account.conversations.where('created_at < ?', 1.day.ago)
|
||||
conversations.each(&:resolved!)
|
||||
perform_enqueued_jobs do
|
||||
# Resolve all 5 conversations
|
||||
conversations.each(&:resolved!)
|
||||
|
||||
# Reopen 1 conversation
|
||||
conversations.first.open!
|
||||
end
|
||||
|
||||
builder = described_class.new(account, params)
|
||||
metrics = builder.timeseries
|
||||
|
||||
expect(metrics[Time.zone.today]).to be 0
|
||||
expect(metrics[Time.zone.today - 2.days]).to be 5
|
||||
# 4 conversations are resolved
|
||||
expect(metrics[Time.zone.today]).to be 4
|
||||
expect(metrics[Time.zone.today - 2.days]).to be 0
|
||||
end
|
||||
|
||||
it 'returns average first response time' do
|
||||
@@ -216,11 +224,21 @@ describe V2::ReportBuilder do
|
||||
}
|
||||
|
||||
conversations = account.conversations.where('created_at < ?', 1.day.ago)
|
||||
conversations.each(&:resolved!)
|
||||
|
||||
perform_enqueued_jobs do
|
||||
# ensure 5 reporting events are created
|
||||
conversations.each(&:resolved!)
|
||||
|
||||
# open one of the conversations to check if it is not counted
|
||||
conversations.last.open!
|
||||
end
|
||||
|
||||
builder = described_class.new(account, params)
|
||||
metrics = builder.timeseries
|
||||
|
||||
expect(metrics[Time.zone.today - 2.days]).to be 5
|
||||
# this should count only 4 since the last conversation was reopened
|
||||
expect(metrics[Time.zone.today]).to be 4
|
||||
expect(metrics[Time.zone.today - 2.days]).to be 0
|
||||
end
|
||||
|
||||
it 'returns average first response time' do
|
||||
|
||||
Reference in New Issue
Block a user