From 304cdb0d8455391ed8a1891e0f340cd149d1936f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Alem=C3=A3o?= Date: Mon, 27 Jan 2025 14:48:00 +0000 Subject: [PATCH] [CPDLP-3968] Amend void declarations service to include ineligible statement line items --- app/services/void_participant_declaration.rb | 2 +- .../void_participant_declaration_spec.rb | 78 ++++++++++++------- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/app/services/void_participant_declaration.rb b/app/services/void_participant_declaration.rb index 2cb68e5919..b67d6eace6 100644 --- a/app/services/void_participant_declaration.rb +++ b/app/services/void_participant_declaration.rb @@ -42,6 +42,6 @@ def make_voided attr_accessor :participant_declaration def line_item - participant_declaration.statement_line_items.find_by(state: %w[eligible payable submitted]) + participant_declaration.statement_line_items.find_by(state: %w[eligible payable ineligible]) end end diff --git a/spec/services/void_participant_declaration_spec.rb b/spec/services/void_participant_declaration_spec.rb index e946c3b443..e9e552e835 100644 --- a/spec/services/void_participant_declaration_spec.rb +++ b/spec/services/void_participant_declaration_spec.rb @@ -52,22 +52,6 @@ end end - context "when declaration is payable" do - let(:participant_declaration) do - create( - :ect_participant_declaration, - :payable, - cpd_lead_provider:, - participant_profile:, - ) - end - - it "can be voided" do - subject.call - expect(participant_declaration.reload).to be_voided - end - end - context "when declaration is paid" do let(:participant_declaration) do create( @@ -107,21 +91,59 @@ end context "when declaration is attached to a statement" do - let(:participant_declaration) do - create( - :ect_participant_declaration, - :payable, - cpd_lead_provider:, - participant_profile:, - ) + let(:line_item) { participant_declaration.statement_line_items.first } + + context "when declaration is eligible" do + let(:participant_declaration) do + create( + :ect_participant_declaration, + :eligible, + cpd_lead_provider:, + participant_profile:, + ) + end + + it "updates declaration and line item state to voided" do + subject.call + expect(participant_declaration.reload).to be_voided + expect(line_item.reload).to be_voided + end end - let(:line_item) { participant_declaration.statement_line_items.first } + context "when declaration is payable" do + let(:participant_declaration) do + create( + :ect_participant_declaration, + :payable, + cpd_lead_provider:, + participant_profile:, + ) + end + + it "updates declaration and line item state to voided" do + subject.call + expect(participant_declaration.reload).to be_voided + expect(line_item.reload).to be_voided + end + end - it "updates declaration and line item state to voided" do - subject.call - expect(participant_declaration.reload).to be_voided - expect(line_item.reload).to be_voided + context "when declaration is ineligible" do + let(:participant_declaration) do + create( + :ect_participant_declaration, + :ineligible, + cpd_lead_provider:, + participant_profile:, + ) + end + + before { line_item.ineligible! } + + it "updates declaration and line item state to voided" do + subject.call + expect(participant_declaration.reload).to be_voided + expect(line_item.reload).to be_voided + end end end end