From c30d9409411e179637d6799ed3ad17a143f3de3d Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 19 Dec 2022 16:25:36 +0000 Subject: [PATCH] Add needstype question for 2022/23 bulk uploads --- .../bulk_upload_lettings_logs_controller.rb | 4 +- .../forms/bulk_upload_lettings/needstype.rb | 38 +++++++++++++++++++ .../bulk_upload_lettings/prepare_your_file.rb | 4 +- .../bulk_upload_lettings/upload_your_file.rb | 3 +- .../forms/needstype.erb | 21 ++++++++++ .../forms/upload_your_file.html.erb | 1 + config/locales/en.yml | 6 +++ .../bulk_upload_lettings_logs_spec.rb | 38 ++++++++++++++++++- ...lk_upload_lettings_logs_controller_spec.rb | 2 +- 9 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 app/models/forms/bulk_upload_lettings/needstype.rb create mode 100644 app/views/bulk_upload_lettings_logs/forms/needstype.erb diff --git a/app/controllers/bulk_upload_lettings_logs_controller.rb b/app/controllers/bulk_upload_lettings_logs_controller.rb index 77fb11209..391651cde 100644 --- a/app/controllers/bulk_upload_lettings_logs_controller.rb +++ b/app/controllers/bulk_upload_lettings_logs_controller.rb @@ -24,7 +24,7 @@ class BulkUploadLettingsLogsController < ApplicationController private def current_year - FormHandler.instance.forms["current_lettings"].start_date.year + FormHandler.instance.current_collection_start_year end def in_crossover_period? @@ -37,6 +37,8 @@ private Forms::BulkUploadLettings::Year.new(form_params) when "prepare-your-file" Forms::BulkUploadLettings::PrepareYourFile.new(form_params) + when "needstype" + Forms::BulkUploadLettings::Needstype.new(form_params) when "upload-your-file" Forms::BulkUploadLettings::UploadYourFile.new(form_params.merge(current_user:)) when "checking-file" diff --git a/app/models/forms/bulk_upload_lettings/needstype.rb b/app/models/forms/bulk_upload_lettings/needstype.rb new file mode 100644 index 000000000..0cadd647c --- /dev/null +++ b/app/models/forms/bulk_upload_lettings/needstype.rb @@ -0,0 +1,38 @@ +module Forms + module BulkUploadLettings + class Needstype + include ActiveModel::Model + include ActiveModel::Attributes + include Rails.application.routes.url_helpers + + attribute :needstype, :integer + attribute :year, :integer + + validates :needstype, presence: true + + def view_path + "bulk_upload_lettings_logs/forms/needstype" + end + + def options + [OpenStruct.new(id: 1, name: "General needs"), OpenStruct.new(id: 2, name: "Supported housing")] + end + + def back_path + bulk_upload_lettings_log_path(id: "prepare-your-file", form: { year:, needstype: }) + end + + def next_path + bulk_upload_lettings_log_path(id: "upload-your-file", form: { year:, needstype: }) + end + + def year_combo + "#{year}/#{year + 1 - 2000}" + end + + def save! + true + end + end + end +end diff --git a/app/models/forms/bulk_upload_lettings/prepare_your_file.rb b/app/models/forms/bulk_upload_lettings/prepare_your_file.rb index 4e2c9b9a6..5bfc0a2aa 100644 --- a/app/models/forms/bulk_upload_lettings/prepare_your_file.rb +++ b/app/models/forms/bulk_upload_lettings/prepare_your_file.rb @@ -6,6 +6,7 @@ module Forms include Rails.application.routes.url_helpers attribute :year, :integer + attribute :needstype, :integer def view_path "bulk_upload_lettings_logs/forms/prepare_your_file" @@ -20,7 +21,8 @@ module Forms end def next_path - bulk_upload_lettings_log_path(id: "upload-your-file", form: { year: }) + page_id = year == 2022 ? "needstype" : "upload-your-file" + bulk_upload_lettings_log_path(id: page_id, form: { year:, needstype: }) end def template_path diff --git a/app/models/forms/bulk_upload_lettings/upload_your_file.rb b/app/models/forms/bulk_upload_lettings/upload_your_file.rb index 7ba341cb5..da2947f53 100644 --- a/app/models/forms/bulk_upload_lettings/upload_your_file.rb +++ b/app/models/forms/bulk_upload_lettings/upload_your_file.rb @@ -20,7 +20,8 @@ module Forms end def back_path - bulk_upload_lettings_log_path(id: "prepare-your-file", form: { year: }) + page_id = year == 2022 ? "needstype" : "prepare-your-file" + bulk_upload_lettings_log_path(id: page_id, form: { year:, needstype: }) end def year_combo diff --git a/app/views/bulk_upload_lettings_logs/forms/needstype.erb b/app/views/bulk_upload_lettings_logs/forms/needstype.erb new file mode 100644 index 000000000..be47e260d --- /dev/null +++ b/app/views/bulk_upload_lettings_logs/forms/needstype.erb @@ -0,0 +1,21 @@ +<% content_for :before_content do %> + <%= govuk_back_link href: @form.back_path %> +<% end %> +
+
+ <%= form_with model: @form, scope: :form, url: bulk_upload_lettings_log_path(id: "needstype"), method: :patch do |f| %> + <%= f.govuk_error_summary %> + <%= f.hidden_field :year %> + + <%= f.govuk_collection_radio_buttons :needstype, + @form.options, + :id, + :name, + hint: { text: I18n.t("hints.bulk_upload.needstype") }, + legend: { text: "What is the needs type?", size: "l" }, + caption: { text: "Upload lettings logs in bulk (#{@form.year_combo})", size: "l" } %> + + <%= f.govuk_submit %> + <% end %> +
+
\ No newline at end of file diff --git a/app/views/bulk_upload_lettings_logs/forms/upload_your_file.html.erb b/app/views/bulk_upload_lettings_logs/forms/upload_your_file.html.erb index 8964438de..bbafc28b3 100644 --- a/app/views/bulk_upload_lettings_logs/forms/upload_your_file.html.erb +++ b/app/views/bulk_upload_lettings_logs/forms/upload_your_file.html.erb @@ -6,6 +6,7 @@
<%= form_with model: @form, scope: :form, url: bulk_upload_lettings_log_path(id: "upload-your-file"), method: :patch do |f| %> <%= f.hidden_field :year %> + <%= f.hidden_field :needstype %> <%= f.govuk_error_summary %> diff --git a/config/locales/en.yml b/config/locales/en.yml index ba9ffac32..200dfb88e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -59,6 +59,10 @@ en: file: blank: Select which file to upload not_csv: Your file must be in CSV format + forms/bulk_upload_lettings/needstype: + attributes: + needstype: + blank: You must answer needs type activerecord: errors: @@ -451,6 +455,8 @@ en: toggle_active: "If the date is before %{date}, select ‘From the start of the current collection period’ because the previous period has now closed." scheme: toggle_active: "If the date is before %{date}, select ‘From the start of the current collection period’ because the previous period has now closed." + bulk_upload: + needstype: "General needs housing includes both self-contained and shared housing without support or specific adaptations. Supported housing can include direct access hostels, group homes, residential care and nursing homes." warnings: location: diff --git a/spec/features/bulk_upload_lettings_logs_spec.rb b/spec/features/bulk_upload_lettings_logs_spec.rb index 3df49fe44..939518ac9 100644 --- a/spec/features/bulk_upload_lettings_logs_spec.rb +++ b/spec/features/bulk_upload_lettings_logs_spec.rb @@ -42,6 +42,19 @@ RSpec.describe "Bulk upload lettings log" do expect(page).to have_content("Upload lettings logs in bulk (2022/23)") click_button("Continue") + expect(page).to have_content("What is the needs type?") + click_button("Continue") + + expect(page).to have_content("You must answer needs type") + choose("General needs") + click_button("Continue") + + click_link("Back") + + expect(page.find_field("form-needstype-1-field")).to be_checked + click_button("Continue") + + expect(page).to have_content("Upload lettings logs in bulk (2022/23)") expect(page).to have_content("Upload your file") click_button("Upload") @@ -75,10 +88,33 @@ RSpec.describe "Bulk upload lettings log" do expect(page).to have_link("Upload lettings logs in bulk") click_link("Upload lettings logs in bulk") - expect(page).to have_content("Upload lettings logs in bulk (2022/23)") + expect(page).to have_content("Upload lettings logs in bulk (2023/24)") + click_button("Continue") + + expect(page).to have_content("Upload your file") + end + end + end + + context "when the collection year isn't 22/23" do + it "shows journey without the needstype" do + Timecop.freeze(2023, 10, 1) do + visit("/lettings-logs") + expect(page).to have_link("Upload lettings logs in bulk") + click_link("Upload lettings logs in bulk") + + expect(page).to have_content("Prepare your file") click_button("Continue") + click_link("Back") + + expect(page).to have_content("Prepare your file") + click_button("Continue") + + expect(page).to have_content("Upload lettings logs in bulk (2023/24)") + expect(page).to have_content("Upload your file") + click_button("Upload") end end end diff --git a/spec/requests/bulk_upload_lettings_logs_controller_spec.rb b/spec/requests/bulk_upload_lettings_logs_controller_spec.rb index 8b9d091ca..fc27ed0d1 100644 --- a/spec/requests/bulk_upload_lettings_logs_controller_spec.rb +++ b/spec/requests/bulk_upload_lettings_logs_controller_spec.rb @@ -10,7 +10,7 @@ RSpec.describe BulkUploadLettingsLogsController, type: :request do describe "GET /lettings-logs/bulk-upload-logs/start" do context "when not in crossover period" do - let(:expected_year) { FormHandler.instance.forms["current_lettings"].start_date.year } + let(:expected_year) { 2021 } it "redirects to /prepare-your-file" do Timecop.freeze(2022, 1, 1) do