From e3152e7bd9bb07ae56111a769e7a36a1bdca4f75 Mon Sep 17 00:00:00 2001 From: Andrew Pepler Date: Wed, 5 Feb 2025 16:21:01 +0000 Subject: [PATCH 1/2] Hide next chase message --- app/models/data_request_area.rb | 8 +-- .../cases/data_request_areas/show.html.slim | 6 +- spec/models/data_request_area_spec.rb | 62 +++++++++++++++++++ .../data_request_areas/show_html_slim_spec.rb | 20 ++++-- 4 files changed, 85 insertions(+), 11 deletions(-) diff --git a/app/models/data_request_area.rb b/app/models/data_request_area.rb index 20ee78f214..2333174eb8 100644 --- a/app/models/data_request_area.rb +++ b/app/models/data_request_area.rb @@ -55,16 +55,16 @@ def kase offender_sar_case end - def completed? - status == :completed - end - def status return :not_started unless data_requests.exists? data_requests.map(&:status).all?(:completed) ? :completed : :in_progress end + def in_progress? + status == :in_progress && !kase.closed? + end + def recipient_emails(escalated: false) if escalated && can_escalate? contact_emails.concat(contact_escalation_emails) diff --git a/app/views/cases/data_request_areas/show.html.slim b/app/views/cases/data_request_areas/show.html.slim index 7841e26c64..2d7ceafc61 100644 --- a/app/views/cases/data_request_areas/show.html.slim +++ b/app/views/cases/data_request_areas/show.html.slim @@ -25,7 +25,7 @@ div class="case" = @data_request_area.location section.case-info - = render partial: 'cases/offender_sar/data_requests', locals: { case_details: @case, data_request_area: @data_request_area, data_request: @data_request, allow_editing: allow_editing } + = render partial: 'cases/offender_sar/data_requests', locals: { case_details: @case, data_request_area: @data_request_area, allow_editing: allow_editing } - if @data_request_area.data_requests.exists? && FeatureSet.email_commissioning_document.enabled? div.commissioning-document @@ -48,11 +48,11 @@ div class="case" div.button-holder = link_to t('button.send_email'), send_email_case_data_request_area_path(@case, @data_request_area), class: 'button button-high data_request_area_send_email' - - if @data_request_area.commissioning_email_sent? + - if @data_request_area.commissioning_email_sent? && @data_request_area.in_progress? div.next-chase-description.govuk-inset-text = @data_request_area.next_chase_description hr - - if @data_request_area.data_request_emails.present? + - if @sent_emails.present? h2.heading-medium = t('.emails_history_header') table.report diff --git a/spec/models/data_request_area_spec.rb b/spec/models/data_request_area_spec.rb index 65a3ac58fa..60e40cf281 100644 --- a/spec/models/data_request_area_spec.rb +++ b/spec/models/data_request_area_spec.rb @@ -155,6 +155,68 @@ end end + describe "#in_progress?" do + let(:data_request_area) { create(:data_request_area) } + let(:in_progress_data_request) { create(:data_request)} + let(:completed_data_request) { create(:data_request, :completed)} + + context "when case is open" do + context "with no data requests" do + before do + data_request_area.data_requests.delete_all + end + + it "is false" do + expect(data_request_area).not_to be_in_progress + end + end + + context "with only in progress data request" do + before do + data_request_area.data_requests << in_progress_data_request + end + + it "is true" do + expect(data_request_area).to be_in_progress + end + end + + context "with only completed data request" do + before do + data_request_area.data_requests << completed_data_request + end + + it "is false" do + expect(data_request_area).not_to be_in_progress + end + end + + context "with in progress and completed data requests" do + before do + data_request_area.data_requests << completed_data_request + data_request_area.data_requests << in_progress_data_request + end + + it "is true" do + expect(data_request_area).to be_in_progress + end + end + end + + context "when case is closed" do + before do + closed_case = create(:offender_sar_case, :closed) + data_request_area.update!(offender_sar_case: closed_case) + data_request_area.data_requests << in_progress_data_request + data_request_area.data_requests << completed_data_request + end + + it "is false" do + expect(data_request_area).not_to be_in_progress + end + end + end + describe "#recipient_emails" do let(:email_a) { "a.smith@email.com" } let(:email_b) { "b.jones@email.com" } diff --git a/spec/views/cases/data_request_areas/show_html_slim_spec.rb b/spec/views/cases/data_request_areas/show_html_slim_spec.rb index 68003baa76..ca56251781 100644 --- a/spec/views/cases/data_request_areas/show_html_slim_spec.rb +++ b/spec/views/cases/data_request_areas/show_html_slim_spec.rb @@ -27,6 +27,8 @@ ) end + let(:in_progress_data_request) { create(:data_request)} + let(:page) { data_request_area_show_page } let(:policy) do @@ -45,7 +47,7 @@ context "when Offender SAR Case data request area has a data request" do before do - assign(:data_request, data_request) + data_request_area.data_requests << data_request assign(:data_request_area, data_request_area.decorate) assign(:case, data_request_area.kase) assign(:commissioning_document, data_request_area.commissioning_document.decorate) @@ -93,7 +95,7 @@ let(:can_send_day_1_email) { false } before do - assign(:data_request, data_request) + data_request_area.data_requests << in_progress_data_request assign(:data_request_area, data_request_area.decorate) assign(:case, data_request_area.kase) assign(:commissioning_document, data_request_area.commissioning_document.decorate) @@ -146,7 +148,7 @@ end before do - assign(:data_request, data_request) + data_request_area.data_requests << data_request assign(:data_request_area, data_request_area.decorate) assign(:case, data_request_area.kase) @@ -169,14 +171,15 @@ context "when commissioning email has been sent" do let(:email_address) { "user@prison.gov.uk" } + let(:current_data_request) { in_progress_data_request } before do Timecop.freeze(Time.zone.local(2023, 7, 15)) do + data_request_area.data_requests << current_data_request commissioning_document.update!(sent_at: Date.new(2023, 7, 7)) create(:data_request_email, data_request_area:, created_at: "2023-07-07 14:53", email_address:) assign(:commissioning_document, commissioning_document.decorate) assign(:data_request_area, data_request_area.decorate) - assign(:data_request, data_request.decorate) assign(:case, data_request_area.kase) assign(:sent_emails, data_request_area.data_request_emails.order(created_at: :desc).map(&:decorate)) @@ -213,10 +216,19 @@ expect(page.commissioning_document.next_chase_description.text).to eq "Chase 1 will be sent on 15 Jul 2023" end end + + context "when data requests are complete" do + let(:current_data_request) { data_request } + + it "does not display next chase date" do + expect { page.commissioning_document.next_chase_description }.to raise_error(Capybara::ElementNotFound) + end + end end context "when commissioning email has not been sent" do before do + data_request_area.data_requests << in_progress_data_request assign(:commissioning_document, commissioning_document.decorate) assign(:data_request_area, data_request_area.decorate) assign(:data_request, data_request.decorate) From 14f800a556a7e3aeee41824db51218520abcf40c Mon Sep 17 00:00:00 2001 From: Andrew Pepler Date: Wed, 5 Feb 2025 16:29:08 +0000 Subject: [PATCH 2/2] Linting --- spec/models/data_request_area_spec.rb | 4 ++-- spec/views/cases/data_request_areas/show_html_slim_spec.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/models/data_request_area_spec.rb b/spec/models/data_request_area_spec.rb index 60e40cf281..eaa21783b2 100644 --- a/spec/models/data_request_area_spec.rb +++ b/spec/models/data_request_area_spec.rb @@ -157,8 +157,8 @@ describe "#in_progress?" do let(:data_request_area) { create(:data_request_area) } - let(:in_progress_data_request) { create(:data_request)} - let(:completed_data_request) { create(:data_request, :completed)} + let(:in_progress_data_request) { create(:data_request) } + let(:completed_data_request) { create(:data_request, :completed) } context "when case is open" do context "with no data requests" do diff --git a/spec/views/cases/data_request_areas/show_html_slim_spec.rb b/spec/views/cases/data_request_areas/show_html_slim_spec.rb index ca56251781..10a7dfedb2 100644 --- a/spec/views/cases/data_request_areas/show_html_slim_spec.rb +++ b/spec/views/cases/data_request_areas/show_html_slim_spec.rb @@ -27,7 +27,7 @@ ) end - let(:in_progress_data_request) { create(:data_request)} + let(:in_progress_data_request) { create(:data_request) } let(:page) { data_request_area_show_page }