From dff7eedafbf8628ff26b0269a91df065c59f9894 Mon Sep 17 00:00:00 2001 From: Aaron Spencer Date: Tue, 8 Aug 2023 15:49:46 +0100 Subject: [PATCH] CLDC-2505: tests added, bulk_upload model changed, redirect changed --- ...bulk_upload_lettings_results_controller.rb | 1 - .../bulk_upload_lettings_resume_controller.rb | 2 - .../bulk_upload_sales_results_controller.rb | 1 - app/models/bulk_upload.rb | 4 ++ .../bulk_upload_lettings_resume/chosen.rb | 2 +- .../bulk_upload_lettings_resume/confirm.rb | 5 +- .../bulk_upload_lettings_resume/fix_choice.rb | 4 +- .../confirm.rb | 4 +- .../confirm_soft_errors.rb | 4 +- .../forms/bulk_upload_sales_resume/chosen.rb | 2 +- .../forms/bulk_upload_sales_resume/confirm.rb | 4 +- .../bulk_upload_sales_resume/fix_choice.rb | 4 +- .../confirm.rb | 4 +- .../confirm_soft_errors.rb | 4 +- .../completed.html.erb | 14 ++++++ .../completed.html.erb | 14 ++++++ spec/models/bulk_upload_spec.rb | 29 +++++++++++ ..._upload_lettings_resume_controller_spec.rb | 50 +++++++++++++++++-- 18 files changed, 118 insertions(+), 34 deletions(-) create mode 100644 app/views/bulk_upload_lettings_resume/completed.html.erb create mode 100644 app/views/bulk_upload_sales_resume/completed.html.erb create mode 100644 spec/models/bulk_upload_spec.rb diff --git a/app/controllers/bulk_upload_lettings_results_controller.rb b/app/controllers/bulk_upload_lettings_results_controller.rb index 7c981785a..a7ea2605a 100644 --- a/app/controllers/bulk_upload_lettings_results_controller.rb +++ b/app/controllers/bulk_upload_lettings_results_controller.rb @@ -19,7 +19,6 @@ class BulkUploadLettingsResultsController < ApplicationController redirect_to(lettings_logs_path(bulk_upload_id: [@bulk_upload.id])) else - @bulk_upload.update!(choice: "completed") reset_logs_filters end end diff --git a/app/controllers/bulk_upload_lettings_resume_controller.rb b/app/controllers/bulk_upload_lettings_resume_controller.rb index 8cf7e9c0d..132ca095b 100644 --- a/app/controllers/bulk_upload_lettings_resume_controller.rb +++ b/app/controllers/bulk_upload_lettings_resume_controller.rb @@ -41,8 +41,6 @@ private Forms::BulkUploadLettingsResume::Chosen.new(form_params.merge(bulk_upload: @bulk_upload)) when "confirm" Forms::BulkUploadLettingsResume::Confirm.new(form_params.merge(bulk_upload: @bulk_upload)) - when "completed" - Forms::BulkUploadLettingsResume::Confirm.new(form_params.merge(bulk_upload: @bulk_upload)) else raise "invalid form" end diff --git a/app/controllers/bulk_upload_sales_results_controller.rb b/app/controllers/bulk_upload_sales_results_controller.rb index 1ed44aae9..feb7b3e06 100644 --- a/app/controllers/bulk_upload_sales_results_controller.rb +++ b/app/controllers/bulk_upload_sales_results_controller.rb @@ -17,7 +17,6 @@ class BulkUploadSalesResultsController < ApplicationController redirect_to(sales_logs_path(bulk_upload_id: [@bulk_upload.id])) else - @bulk_upload.update!(choice: "completed") reset_logs_filters end end diff --git a/app/models/bulk_upload.rb b/app/models/bulk_upload.rb index 65a25507b..552f6fbeb 100644 --- a/app/models/bulk_upload.rb +++ b/app/models/bulk_upload.rb @@ -10,6 +10,10 @@ 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_lettings_resume/confirm.rb b/app/models/forms/bulk_upload_lettings_resume/confirm.rb index aaa0ccd6b..c109cd1b1 100644 --- a/app/models/forms/bulk_upload_lettings_resume/confirm.rb +++ b/app/models/forms/bulk_upload_lettings_resume/confirm.rb @@ -31,8 +31,7 @@ module Forms end def preflight_valid? - - bulk_upload.choice != "completed" && bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" + bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" end def preflight_redirect @@ -41,8 +40,6 @@ module Forms page_bulk_upload_lettings_resume_path(bulk_upload, :chosen) when "bulk-confirm-soft-validations" page_bulk_upload_lettings_soft_validations_check_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_lettings_result_path(bulk_upload.id) end end end diff --git a/app/models/forms/bulk_upload_lettings_resume/fix_choice.rb b/app/models/forms/bulk_upload_lettings_resume/fix_choice.rb index 9e41f1618..76ee10d17 100644 --- a/app/models/forms/bulk_upload_lettings_resume/fix_choice.rb +++ b/app/models/forms/bulk_upload_lettings_resume/fix_choice.rb @@ -52,7 +52,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" + bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" end def preflight_redirect @@ -61,8 +61,6 @@ module Forms page_bulk_upload_lettings_resume_path(bulk_upload, :chosen) when "bulk-confirm-soft-validations" page_bulk_upload_lettings_soft_validations_check_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_lettings_result_path(bulk_upload.id) end end end diff --git a/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm.rb b/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm.rb index 1fb967a27..aba75791e 100644 --- a/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm.rb +++ b/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm.rb @@ -31,7 +31,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" + bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" end def preflight_redirect @@ -40,8 +40,6 @@ module Forms page_bulk_upload_lettings_soft_validations_check_path(bulk_upload, :chosen) when "create-fix-inline" page_bulk_upload_lettings_resume_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_lettings_result_path(bulk_upload.id) end end end diff --git a/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm_soft_errors.rb b/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm_soft_errors.rb index 880b8b871..34b4b97f3 100644 --- a/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm_soft_errors.rb +++ b/app/models/forms/bulk_upload_lettings_soft_validations_check/confirm_soft_errors.rb @@ -37,7 +37,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" + bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" end def preflight_redirect @@ -46,8 +46,6 @@ module Forms page_bulk_upload_lettings_soft_validations_check_path(bulk_upload, :chosen) when "create-fix-inline" page_bulk_upload_lettings_resume_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_lettings_result_path(bulk_upload.id) end end end 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/models/forms/bulk_upload_sales_resume/confirm.rb b/app/models/forms/bulk_upload_sales_resume/confirm.rb index 84fc6dca9..1211ef3f0 100644 --- a/app/models/forms/bulk_upload_sales_resume/confirm.rb +++ b/app/models/forms/bulk_upload_sales_resume/confirm.rb @@ -31,7 +31,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" + bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" end def preflight_redirect @@ -40,8 +40,6 @@ module Forms page_bulk_upload_sales_resume_path(bulk_upload, :chosen) when "bulk-confirm-soft-validations" page_bulk_upload_sales_soft_validations_check_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_sales_result_path(bulk_upload.id) end end end diff --git a/app/models/forms/bulk_upload_sales_resume/fix_choice.rb b/app/models/forms/bulk_upload_sales_resume/fix_choice.rb index 1c8e13d9d..fc565e2f6 100644 --- a/app/models/forms/bulk_upload_sales_resume/fix_choice.rb +++ b/app/models/forms/bulk_upload_sales_resume/fix_choice.rb @@ -52,7 +52,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" + bulk_upload.choice != "create-fix-inline" && bulk_upload.choice != "bulk-confirm-soft-validations" end def preflight_redirect @@ -61,8 +61,6 @@ module Forms page_bulk_upload_sales_resume_path(bulk_upload, :chosen) when "bulk-confirm-soft-validations" page_bulk_upload_sales_soft_validations_check_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_sales_result_path(bulk_upload.id) end end end diff --git a/app/models/forms/bulk_upload_sales_soft_validations_check/confirm.rb b/app/models/forms/bulk_upload_sales_soft_validations_check/confirm.rb index 3c6441d6e..894f55123 100644 --- a/app/models/forms/bulk_upload_sales_soft_validations_check/confirm.rb +++ b/app/models/forms/bulk_upload_sales_soft_validations_check/confirm.rb @@ -31,7 +31,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" + bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" end def preflight_redirect @@ -40,8 +40,6 @@ module Forms page_bulk_upload_sales_soft_validations_check_path(bulk_upload, :chosen) when "create-fix-inline" page_bulk_upload_sales_resume_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_lettings_result_path(bulk_upload.id) end end end diff --git a/app/models/forms/bulk_upload_sales_soft_validations_check/confirm_soft_errors.rb b/app/models/forms/bulk_upload_sales_soft_validations_check/confirm_soft_errors.rb index 04e00c706..041647cf0 100644 --- a/app/models/forms/bulk_upload_sales_soft_validations_check/confirm_soft_errors.rb +++ b/app/models/forms/bulk_upload_sales_soft_validations_check/confirm_soft_errors.rb @@ -37,7 +37,7 @@ module Forms end def preflight_valid? - bulk_upload.choice != "completed" && bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" + bulk_upload.choice != "bulk-confirm-soft-validations" && bulk_upload.choice != "create-fix-inline" end def preflight_redirect @@ -46,8 +46,6 @@ module Forms page_bulk_upload_sales_soft_validations_check_path(bulk_upload, :chosen) when "create-fix-inline" page_bulk_upload_sales_resume_path(bulk_upload, :chosen) - when "completed" - resume_bulk_upload_lettings_result_path(bulk_upload.id) end end end 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..7bb3b6314 --- /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 have been completed

+ +

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..1297f8388 --- /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 have been completed

+ +

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..46a9d6cae --- /dev/null +++ b/spec/models/bulk_upload_spec.rb @@ -0,0 +1,29 @@ +require "rails_helper" + +RSpec.describe BulkUpload, type: :model do +let(:bulk_upload) { create(:bulk_upload, log_type: "lettings") } + +describe "completed?" do + context "when the fixed-choice has not been selected" do + it "returns false" do + end + end + + context "when there are incomplete logs" do + let!(:lettings_log) { create_list(:lettings_log, 2,:in_progress, bulk_upload:) } + + it "returns false" do + expect(bulk_upload.completed?).to equal(false) + end + end + + context "when there are no incomplete logs" do + let!(:lettings_log) { create_list(:lettings_log, 2, :completed, bulk_upload:) } + + it "returns true" do + 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 7ba8bbc85..bd89a49b2 100644 --- a/spec/requests/bulk_upload_lettings_resume_controller_spec.rb +++ b/spec/requests/bulk_upload_lettings_resume_controller_spec.rb @@ -10,10 +10,54 @@ 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 + + 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") + + 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