From e18ec3a58d2ee8e9b6f72284907c86a50db10cab Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 20 Mar 2024 15:25:46 +0530 Subject: [PATCH] chore: fix specs --- .../v1/accounts/applied_slas_controller.rb | 1 + .../accounts/applied_slas_controller_spec.rb | 35 ++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/enterprise/app/controllers/api/v1/accounts/applied_slas_controller.rb b/enterprise/app/controllers/api/v1/accounts/applied_slas_controller.rb index 49a5dd2e6..1e862d8bb 100644 --- a/enterprise/app/controllers/api/v1/accounts/applied_slas_controller.rb +++ b/enterprise/app/controllers/api/v1/accounts/applied_slas_controller.rb @@ -24,5 +24,6 @@ class Api::V1::Accounts::AppliedSlasController < Api::V1::Accounts::EnterpriseAc .filter_by_assigned_agent_id(params[:user_ids]) .filter_by_inbox_id(params[:inbox_id]) .filter_by_team_id(params[:team_id]) + .filter_by_sla_policy_id(params[:sla_policy_id]) end end 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 e281c31b7..46cb48b03 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 @@ -7,7 +7,9 @@ RSpec.describe 'Applied SLAs API', type: :request do 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) } + let(:conversation3) { create(:conversation, account: account, assignee: agent2) } + let(:sla_policy1) { create(:sla_policy, account: account) } + let(:sla_policy2) { create(:sla_policy, account: account) } describe 'GET /api/v1/accounts/{account.id}/applied_slas/metrics' do context 'when it is an unauthenticated user' do @@ -19,7 +21,7 @@ RSpec.describe 'Applied SLAs API', type: :request do context 'when it is an authenticated user' do it 'returns the sla metrics' do - create(:applied_sla, sla_policy: sla_policy, conversation: conversation1) + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation1) get "/api/v1/accounts/#{account.id}/applied_slas/metrics", headers: administrator.create_new_auth_token expect(response).to have_http_status(:success) @@ -31,8 +33,8 @@ RSpec.describe 'Applied SLAs API', type: :request do 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) + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation1, created_at: 10.days.ago) + create(:applied_sla, sla_policy: sla_policy1, 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 }, @@ -44,13 +46,30 @@ RSpec.describe 'Applied SLAs API', type: :request do expect(body).to include('number_of_breaches' => 0) end - it 'filters csat metrics based on a date range and agent ids' do + it 'filters sla 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') + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation1, created_at: 10.days.ago) + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation3, created_at: 3.days.ago) + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation2, created_at: 3.days.ago, sla_status: 'missed') get "/api/v1/accounts/#{account.id}/applied_slas/metrics", - params: { agent_ids: [agent1.id] }, + params: { agent_ids: [agent2.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' => 66.66666666666666) + expect(body).to include('number_of_breaches' => 1) + end + + it 'filters sla metrics based on sla policy ids' do + AppliedSla.destroy_all + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation1) + create(:applied_sla, sla_policy: sla_policy1, conversation: conversation2, sla_status: 'missed') + create(:applied_sla, sla_policy: sla_policy2, conversation: conversation2, sla_status: 'missed') + + get "/api/v1/accounts/#{account.id}/applied_slas/metrics", + params: { sla_policy_id: sla_policy1.id }, headers: administrator.create_new_auth_token expect(response).to have_http_status(:success) body = JSON.parse(response.body)