diff --git a/app/models/bulk_upload.rb b/app/models/bulk_upload.rb index e98103b6d..9db828184 100644 --- a/app/models/bulk_upload.rb +++ b/app/models/bulk_upload.rb @@ -10,6 +10,11 @@ class BulkUpload < ApplicationRecord after_initialize :generate_identifier, unless: :identifier + def completed? + incomplete_logs = logs.where.not(status: "completed") + !incomplete_logs.exists? + end + def year_combo "#{year}/#{year - 2000 + 1}" end diff --git a/app/models/forms/bulk_upload_lettings_resume/chosen.rb b/app/models/forms/bulk_upload_lettings_resume/chosen.rb index 6a6f670c4..b795d8d4b 100644 --- a/app/models/forms/bulk_upload_lettings_resume/chosen.rb +++ b/app/models/forms/bulk_upload_lettings_resume/chosen.rb @@ -8,7 +8,7 @@ module Forms attribute :bulk_upload def view_path - "bulk_upload_lettings_resume/chosen" + bulk_upload.completed? ? "bulk_upload_lettings_resume/completed" : "bulk_upload_lettings_resume/chosen" end def back_path diff --git a/app/models/forms/bulk_upload_sales_resume/chosen.rb b/app/models/forms/bulk_upload_sales_resume/chosen.rb index 2fa85c6c9..3bf32ee71 100644 --- a/app/models/forms/bulk_upload_sales_resume/chosen.rb +++ b/app/models/forms/bulk_upload_sales_resume/chosen.rb @@ -8,7 +8,7 @@ module Forms attribute :bulk_upload def view_path - "bulk_upload_sales_resume/chosen" + bulk_upload.completed? ? "bulk_upload_sales_resume/completed" : "bulk_upload_sales_resume/chosen" end def back_path diff --git a/app/views/bulk_upload_lettings_resume/completed.html.erb b/app/views/bulk_upload_lettings_resume/completed.html.erb new file mode 100644 index 000000000..0487d1921 --- /dev/null +++ b/app/views/bulk_upload_lettings_resume/completed.html.erb @@ -0,0 +1,14 @@ +<% content_for :before_content do %> + <%= govuk_back_link href: @form.back_path %> +<% end %> + +
+
+ Bulk upload for lettings (<%= @bulk_upload.year_combo %>) +

These logs are complete

+ +

You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.

+ + <%= govuk_button_link_to "Return to lettings logs", lettings_logs_path %> +
+
diff --git a/app/views/bulk_upload_lettings_soft_validations_check/chosen.html.erb b/app/views/bulk_upload_lettings_soft_validations_check/chosen.html.erb index 418387fc9..0487d1921 100644 --- a/app/views/bulk_upload_lettings_soft_validations_check/chosen.html.erb +++ b/app/views/bulk_upload_lettings_soft_validations_check/chosen.html.erb @@ -5,9 +5,9 @@
Bulk upload for lettings (<%= @bulk_upload.year_combo %>) -

These logs have been created

+

These logs are complete

-

You have created logs from your bulk upload. Return to lettings logs to view them.

+

You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.

<%= govuk_button_link_to "Return to lettings logs", lettings_logs_path %>
diff --git a/app/views/bulk_upload_sales_resume/completed.html.erb b/app/views/bulk_upload_sales_resume/completed.html.erb new file mode 100644 index 000000000..9fcc656ad --- /dev/null +++ b/app/views/bulk_upload_sales_resume/completed.html.erb @@ -0,0 +1,14 @@ +<% content_for :before_content do %> + <%= govuk_back_link href: @form.back_path %> +<% end %> + +
+
+ Bulk upload for sales (<%= @bulk_upload.year_combo %>) +

These logs are complete

+ +

You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.

+ + <%= govuk_button_link_to "Return to sales logs", sales_logs_path %> +
+
diff --git a/app/views/bulk_upload_sales_soft_validations_check/chosen.html.erb b/app/views/bulk_upload_sales_soft_validations_check/chosen.html.erb index 211f9c03c..9fcc656ad 100644 --- a/app/views/bulk_upload_sales_soft_validations_check/chosen.html.erb +++ b/app/views/bulk_upload_sales_soft_validations_check/chosen.html.erb @@ -5,9 +5,9 @@
Bulk upload for sales (<%= @bulk_upload.year_combo %>) -

These logs have been created

+

These logs are complete

-

You have created logs from your bulk upload. Return to sales logs to view them.

+

You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.

<%= govuk_button_link_to "Return to sales logs", sales_logs_path %>
diff --git a/spec/models/bulk_upload_spec.rb b/spec/models/bulk_upload_spec.rb new file mode 100644 index 000000000..8af5f63ea --- /dev/null +++ b/spec/models/bulk_upload_spec.rb @@ -0,0 +1,21 @@ +require "rails_helper" + +RSpec.describe BulkUpload, type: :model do + let(:bulk_upload) { create(:bulk_upload, log_type: "lettings") } + + describe "def bulk_upload.completed?" do + context "when there are incomplete logs" do + it "returns false" do + create_list(:lettings_log, 2, :in_progress, bulk_upload:) + expect(bulk_upload.completed?).to equal(false) + end + end + + context "when there are no incomplete logs" do + it "returns true" do + create_list(:lettings_log, 2, :completed, bulk_upload:) + expect(bulk_upload.completed?).to equal(true) + end + end + end +end diff --git a/spec/requests/bulk_upload_lettings_resume_controller_spec.rb b/spec/requests/bulk_upload_lettings_resume_controller_spec.rb index fddba7190..3da25553a 100644 --- a/spec/requests/bulk_upload_lettings_resume_controller_spec.rb +++ b/spec/requests/bulk_upload_lettings_resume_controller_spec.rb @@ -10,10 +10,27 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do end describe "GET /lettings-logs/bulk-upload-resume/:ID/start" do - it "redirects to choice page" do - get "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/start" + context "when a choice has not been made" do + it "redirects to choice page" do + get "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/start" - expect(response).to redirect_to("/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice") + expect(response).to redirect_to("/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice") + end + end + + context "when a choice has been made and then the logs have been completed" do + let(:lettings_log) { create_list(:lettings_log, 2, :completed, bulk_upload:) } + + it "redirects to the complete page if the bulk uploads are completed" do + bulk_upload.update!(choice: "create-fix-inline") + + get "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/start" + follow_redirect! + expect(response).to redirect_to("/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/chosen") + + follow_redirect! + expect(response.body).to include("You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.") + end end end diff --git a/spec/requests/bulk_upload_sales_resume_controller_spec.rb b/spec/requests/bulk_upload_sales_resume_controller_spec.rb index 9e4ec4a2b..6848112cd 100644 --- a/spec/requests/bulk_upload_sales_resume_controller_spec.rb +++ b/spec/requests/bulk_upload_sales_resume_controller_spec.rb @@ -9,14 +9,6 @@ RSpec.describe BulkUploadSalesResumeController, type: :request do sign_in user end - describe "GET /sales-logs/bulk-upload-resume/:ID/start" do - it "redirects to choice page" do - get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/start" - - expect(response).to redirect_to("/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice") - end - end - describe "GET /sales-logs/bulk-upload-resume/:ID/fix-choice" do it "renders the page correctly" do get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice" @@ -142,11 +134,28 @@ RSpec.describe BulkUploadSalesResumeController, type: :request do end end - describe "GET /sales-logs/bulk-upload-resume/:ID/chosen" do - it "displays correct content" do - get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/chosen" + describe "GET /sales-logs/bulk-upload-resume/:ID/start" do + context "when a choice has not been made" do + it "redirects to choice page" do + get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/start" + + expect(response).to redirect_to("/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice") + end + end + + context "when a choice has been made and then the logs have been completed" do + let(:sales_log) { create_list(:sales_log, 2, :completed, bulk_upload:) } + + it "redirects to the complete page if the bulk uploads are completed" do + bulk_upload.update!(choice: "create-fix-inline") - expect(response.body).to include("You need to fix logs from your bulk upload") + get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/start" + follow_redirect! + expect(response).to redirect_to("/sales-logs/bulk-upload-resume/#{bulk_upload.id}/chosen") + + follow_redirect! + expect(response.body).to include("You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.") + end end end end