From b328d9700f0a1604c853c0a897d5db1010fc0aae Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 20 Mar 2024 14:07:15 +0530 Subject: [PATCH] Update applied_slas_controller_spec.rb --- .../accounts/applied_slas_controller_spec.rb | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/spec/enterprise/controllers/api/v1/accounts/applied_slas_controller_spec.rb b/spec/enterprise/controllers/api/v1/accounts/applied_slas_controller_spec.rb index e0cc8b237..e281c31b7 100644 --- a/spec/enterprise/controllers/api/v1/accounts/applied_slas_controller_spec.rb +++ b/spec/enterprise/controllers/api/v1/accounts/applied_slas_controller_spec.rb @@ -3,8 +3,10 @@ require 'rails_helper' RSpec.describe 'Applied SLAs API', type: :request do let(:account) { create(:account) } let(:administrator) { create(:user, account: account, role: :administrator) } - let(:agent) { create(:user, account: account, role: :agent) } - let(:conversation) { create(:conversation, account: account) } + let(:agent1) { create(:user, account: account, role: :agent) } + let(:agent2) { create(:user, account: account, role: :agent) } + let(:conversation1) { create(:conversation, account: account, assignee: agent1) } + let(:conversation2) { create(:conversation, account: account, assignee: agent2) } let(:sla_policy) { create(:sla_policy, account: account) } describe 'GET /api/v1/accounts/{account.id}/applied_slas/metrics' do @@ -16,8 +18,8 @@ RSpec.describe 'Applied SLAs API', type: :request do end context 'when it is an authenticated user' do - it 'returns the metrics' do - create(:applied_sla, sla_policy: sla_policy, conversation: conversation) + it 'returns the sla metrics' do + create(:applied_sla, sla_policy: sla_policy, conversation: conversation1) get "/api/v1/accounts/#{account.id}/applied_slas/metrics", headers: administrator.create_new_auth_token expect(response).to have_http_status(:success) @@ -26,6 +28,36 @@ RSpec.describe 'Applied SLAs API', type: :request do expect(body).to include('hit_percentage' => 100.0) expect(body).to include('number_of_breaches' => 0) end + + it 'filters sla metrics based on a date range' do + AppliedSla.destroy_all + create(:applied_sla, sla_policy: sla_policy, conversation: conversation1, created_at: 10.days.ago) + create(:applied_sla, sla_policy: sla_policy, conversation: conversation2, created_at: 3.days.ago) + + get "/api/v1/accounts/#{account.id}/applied_slas/metrics", + params: { since: 5.days.ago.to_time.to_i.to_s, until: Time.zone.today.to_time.to_i.to_s }, + headers: administrator.create_new_auth_token + expect(response).to have_http_status(:success) + body = JSON.parse(response.body) + + expect(body).to include('hit_percentage' => 100.0) + expect(body).to include('number_of_breaches' => 0) + end + + it 'filters csat metrics based on a date range and agent ids' do + AppliedSla.destroy_all + create(:applied_sla, sla_policy: sla_policy, conversation: conversation1, created_at: 10.days.ago) + create(:applied_sla, sla_policy: sla_policy, conversation: conversation2, created_at: 3.days.ago, sla_status: 'missed') + + get "/api/v1/accounts/#{account.id}/applied_slas/metrics", + params: { agent_ids: [agent1.id] }, + headers: administrator.create_new_auth_token + expect(response).to have_http_status(:success) + body = JSON.parse(response.body) + + expect(body).to include('hit_percentage' => 50.0) + expect(body).to include('number_of_breaches' => 1) + end end end end