Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CDPT-2049 Handle chase completion #2558

Merged
merged 2 commits into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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