diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index a76c9db52..3523da2e6 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -356,13 +356,11 @@ private return elsif params[:scheme_deactivation_period]["#{key}_type".to_sym] == "default" return FormHandler.instance.start_date_of_earliest_open_for_editing_collection_period - elsif params[:scheme_deactivation_period][key.to_sym].present? - return params[:scheme_deactivation_period][key.to_sym] end - day = params[:scheme_deactivation_period]["#{key}(3i)"] - month = params[:scheme_deactivation_period]["#{key}(2i)"] - year = params[:scheme_deactivation_period]["#{key}(1i)"] + day = params[:scheme_deactivation_period][key.to_s].split("/")[0] + month = params[:scheme_deactivation_period][key.to_s].split("/")[1] + year = params[:scheme_deactivation_period][key.to_s].split("/")[2] return nil if [day, month, year].any?(&:blank?) Time.zone.local(year.to_i, month.to_i, day.to_i) if Date.valid_date?(year.to_i, month.to_i, day.to_i) diff --git a/app/views/schemes/toggle_active.html.erb b/app/views/schemes/toggle_active.html.erb index 3e2f1d4a8..2a376fbbe 100644 --- a/app/views/schemes/toggle_active.html.erb +++ b/app/views/schemes/toggle_active.html.erb @@ -25,10 +25,14 @@ "other", label: { text: "For tenancies starting after a certain date" }, **basic_conditional_html_attributes({ "deactivation_date" => %w[other] }, "scheme") do %> - <%= f.govuk_date_field date_question(action), - legend: { text: "Date", size: "m" }, - hint: { text: "For example, 27 3 2025" }, - width: 20 %> + <%= render partial: "components/date_picker", locals: { + resource: @scheme, + question_id: date_question(action), + legend: { text: "Date", size: "m" }, + resource_type: "scheme", + hint: "For example, 27/3/2025", + f:, + } %> <% end %> <% end %> <%= f.govuk_submit "Continue" %> diff --git a/spec/requests/schemes_controller_spec.rb b/spec/requests/schemes_controller_spec.rb index 713e54142..e5a96992f 100644 --- a/spec/requests/schemes_controller_spec.rb +++ b/spec/requests/schemes_controller_spec.rb @@ -2749,7 +2749,7 @@ RSpec.describe SchemesController, type: :request do end context "with other date" do - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "10", "deactivation_date(2i)": "10", "deactivation_date(1i)": "2022" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "10/10/2022" } } } context "and affected logs" do it "redirects to the confirmation page" do @@ -2901,7 +2901,7 @@ RSpec.describe SchemesController, type: :request do end context "when invalid date is entered" do - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "10", "deactivation_date(2i)": "44", "deactivation_date(1i)": "2022" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "10/44/2022" } } } it "displays the new page with an error message" do expect(response).to have_http_status(:unprocessable_content) @@ -2910,7 +2910,7 @@ RSpec.describe SchemesController, type: :request do end context "when the date is entered is before the beginning of current collection window" do - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "10", "deactivation_date(2i)": "4", "deactivation_date(1i)": "2020" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "10/4/2020" } } } it "displays the new page with an error message" do expect(response).to have_http_status(:unprocessable_content) @@ -2919,7 +2919,7 @@ RSpec.describe SchemesController, type: :request do end context "when the day is not entered" do - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "", "deactivation_date(2i)": "2", "deactivation_date(1i)": "2022" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "/2/2022" } } } it "displays page with an error message" do expect(response).to have_http_status(:unprocessable_content) @@ -2928,7 +2928,7 @@ RSpec.describe SchemesController, type: :request do end context "when the month is not entered" do - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "2", "deactivation_date(2i)": "", "deactivation_date(1i)": "2022" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "2//2022" } } } it "displays page with an error message" do expect(response).to have_http_status(:unprocessable_content) @@ -2937,7 +2937,7 @@ RSpec.describe SchemesController, type: :request do end context "when the year is not entered" do - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "2", "deactivation_date(2i)": "2", "deactivation_date(1i)": "" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "2/2/" } } } it "displays page with an error message" do expect(response).to have_http_status(:unprocessable_content) @@ -2947,7 +2947,7 @@ RSpec.describe SchemesController, type: :request do context "when there is an earlier open deactivation" do let(:deactivation_date) { Time.zone.local(2022, 10, 10) } - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "8", "deactivation_date(2i)": "9", "deactivation_date(1i)": "2023" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "8/9/2023" } } } let(:add_deactivations) { create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2023, 6, 5), reactivation_date: nil, scheme:) } before do @@ -2968,7 +2968,7 @@ RSpec.describe SchemesController, type: :request do context "when there is a later open deactivation" do let(:deactivation_date) { Time.zone.local(2022, 10, 10) } - let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date(3i)": "8", "deactivation_date(2i)": "9", "deactivation_date(1i)": "2022" } } } + let(:params) { { scheme_deactivation_period: { deactivation_date_type: "other", "deactivation_date": "8/9/2022" } } } let(:add_deactivations) { create(:scheme_deactivation_period, deactivation_date: Time.zone.local(2023, 6, 5), reactivation_date: nil, scheme:) } it "redirects to the confirmation page" do