From fd1a06049bfab7ef97e3a98873de59d7e0619a70 Mon Sep 17 00:00:00 2001 From: Patrick Gleeson <113888736+patrick-laa@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:14:31 +0100 Subject: [PATCH] CRM457-2126: Fix high risk calculation (#1214) ## Description of change It was 'all costs, excluding VAT, are greater than 5000'. It is now 'profit costs, including VAT, are greater than or equal to 5000' [Link to relevant ticket](https://dsdmoj.atlassian.net/browse/CRM457-2126) --- .../risk_assessment/high_risk_assessment.rb | 11 +++++------ spec/factories/work_items.rb | 6 ++++++ .../high_risk_assessment_spec.rb | 17 ++++++++++++++--- .../risk_assessment_scorer_spec.rb | 4 +++- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/services/risk_assessment/high_risk_assessment.rb b/app/services/risk_assessment/high_risk_assessment.rb index 8922da3dd..43bc68482 100644 --- a/app/services/risk_assessment/high_risk_assessment.rb +++ b/app/services/risk_assessment/high_risk_assessment.rb @@ -2,14 +2,12 @@ module RiskAssessment class HighRiskAssessment + HIGH_RISK_THRESHOLD = 5000 + def initialize(claim) @claim = claim - @items = { - work_items: Nsm::CostSummary::WorkItems.new(@claim.work_items, @claim), - letters_calls: Nsm::CostSummary::LettersCalls.new(@claim), - disbursements: Nsm::CostSummary::Disbursements.new(@claim.disbursements.by_age, @claim) - } + @summary = Nsm::CheckAnswers::CostSummaryCard.new(claim) end def assess @@ -17,7 +15,8 @@ def assess end def high_cost? - @items.values.filter_map(&:total_cost).sum > 5000 + profit_cost_summary = @summary.table_fields(formatted: false).find { _1[:name] == 'profit_costs' } + profit_cost_summary[:gross_cost] >= HIGH_RISK_THRESHOLD end def counsel_assigned? diff --git a/spec/factories/work_items.rb b/spec/factories/work_items.rb index 74286be0e..14b02bab4 100644 --- a/spec/factories/work_items.rb +++ b/spec/factories/work_items.rb @@ -20,6 +20,12 @@ uplift { '100' } end + trait :high_profit_cost do + valid + work_type { WorkTypes::ATTENDANCE_WITHOUT_COUNSEL } + time_spent { 60_000 } + end + trait :medium_risk_values do work_type { WorkTypes::PREPARATION } time_spent { '100' } diff --git a/spec/services/risk_assessment/high_risk_assessment_spec.rb b/spec/services/risk_assessment/high_risk_assessment_spec.rb index e367133d7..a13518c3b 100644 --- a/spec/services/risk_assessment/high_risk_assessment_spec.rb +++ b/spec/services/risk_assessment/high_risk_assessment_spec.rb @@ -6,20 +6,31 @@ describe '#assess' do subject(:assessment) { described_class.new(claim).assess } - let(:claim) { create(:claim, :one_work_item) } + let(:claim) { create(:claim, :one_work_item, :full_firm_details) } it 'returns false when no clauses are triggered' do expect(assessment).to be_falsey end - context 'when cost is over £5000' do - before { create(:disbursement, :valid_high_cost, claim:) } + context 'when vat-inclusive profit-cost is £5000 or more' do + before do + create(:work_item, :high_profit_cost, claim:) + claim.reload + end it 'returns true' do expect(assessment).to be_truthy end end + context 'when non-profit-cost is over £5000' do + before { create(:disbursement, :valid_high_cost, claim:) } + + it 'returns false' do + expect(assessment).to be_falsey + end + end + context 'when there is an assigned counsel' do before { claim.assigned_counsel = 'yes' } diff --git a/spec/services/risk_assessment/risk_assessment_scorer_spec.rb b/spec/services/risk_assessment/risk_assessment_scorer_spec.rb index 9c49597e9..6b8befb69 100644 --- a/spec/services/risk_assessment/risk_assessment_scorer_spec.rb +++ b/spec/services/risk_assessment/risk_assessment_scorer_spec.rb @@ -7,7 +7,7 @@ describe '#calculate' do context 'returns high risk' do - let(:claim) { create(:claim, :with_assigned_council) } + let(:claim) { create(:claim, :with_assigned_council, :full_firm_details) } it do expect(described_class.calculate(claim)).to eq('high') @@ -17,6 +17,7 @@ context 'returns medium risk' do let(:claim) do create(:claim, + :full_firm_details, prosecution_evidence: 1, defence_statement: 1, number_of_witnesses: 1, @@ -44,6 +45,7 @@ context 'returns low risk' do let(:claim) do create(:claim, + :full_firm_details, prosecution_evidence: 50, defence_statement: 1, number_of_witnesses: 1,