Skip to content

Commit

Permalink
CDPT-2049 Handle chase completion (#2558)
Browse files Browse the repository at this point in the history
  • Loading branch information
vertism authored Feb 6, 2025
1 parent b71856b commit c352e21
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 11 deletions.
8 changes: 4 additions & 4 deletions app/models/data_request_area.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions app/views/cases/data_request_areas/show.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
62 changes: 62 additions & 0 deletions spec/models/data_request_area_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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) { "[email protected]" }
let(:email_b) { "[email protected]" }
Expand Down
20 changes: 16 additions & 4 deletions spec/views/cases/data_request_areas/show_html_slim_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
)
end

let(:in_progress_data_request) { create(:data_request) }

let(:page) { data_request_area_show_page }

let(:policy) do
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)

Expand All @@ -169,14 +171,15 @@

context "when commissioning email has been sent" do
let(:email_address) { "[email protected]" }
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))

Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit c352e21

Please sign in to comment.