diff --git a/app/models/form.rb b/app/models/form.rb index 549415dd4..ba4535d7d 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -3,9 +3,11 @@ class Form :start_date, :end_date, :type, :name, :setup_definition, :setup_sections, :form_sections + include Form::Setup + def initialize(form_path, name, sections_in_form = [], type = "lettings") if type == "sales" - @name = name + @name = "#{start_year}_#{start_year + 1}_sales" @setup_sections = [Form::Sales::Sections::Setup.new(nil, nil, self)] @form_sections = sections_in_form.map { |sec| sec.new(nil, nil, self) } @type = "sales" @@ -13,8 +15,8 @@ class Form @subsections = sections.flat_map(&:subsections) @pages = subsections.flat_map(&:pages) @questions = pages.flat_map(&:questions) - @start_date = Time.zone.local(name[0..3], 4, 1) - @end_date = Time.zone.local(start_date.year + 1, 7, 1) + @start_date = Time.zone.local(start_year, 4, 1) + @end_date = Time.zone.local(start_year + 1, 7, 1) @form_definition = { "form_type" => type, "start_date" => start_date, @@ -24,7 +26,6 @@ class Form else raise "No form definition file exists for given year".freeze unless File.exist?(form_path) - @name = name @setup_sections = [Form::Lettings::Sections::Setup.new(nil, nil, self)] @form_definition = JSON.parse(File.open(form_path).read) @form_sections = form_definition["sections"].map { |id, s| Form::Section.new(id, s, self) } @@ -35,6 +36,7 @@ class Form @questions = pages.flat_map(&:questions) @start_date = Time.iso8601(form_definition["start_date"]) @end_date = Time.iso8601(form_definition["end_date"]) + @name = "#{start_date.year}_#{end_date.year}" end end diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb index 7c7e207a6..849294683 100644 --- a/app/models/form_handler.rb +++ b/app/models/form_handler.rb @@ -20,8 +20,8 @@ class FormHandler def sales_forms sales_sections = [] # Add section classes here e.g. Form::Sales::Property::Sections::PropertyInformation - current_form = Form.new(nil, "#{current_collection_start_year}_#{current_collection_start_year + 1}_sales", sales_sections, "sales") - previous_form = Form.new(nil, "#{current_collection_start_year - 1}_#{current_collection_start_year}_sales", sales_sections, "sales") + current_form = Form.new(nil, current_collection_start_year, sales_sections, "sales") + previous_form = Form.new(nil, current_collection_start_year - 1, sales_sections, "sales") { "current_sales" => { "form" => current_form, "type" => "sales", "start_year" => current_form.start_date.year }, "previous_sales" => { "form" => previous_form, "type" => "sales", "start_year" => previous_form.start_date.year } } end @@ -30,8 +30,7 @@ class FormHandler forms = {} directories.each do |directory| Dir.glob("#{directory}/*.json").each do |form_path| - form_name = File.basename(form_path, ".json") - form = Form.new(form_path, form_name) + form = Form.new(form_path) lettings_form_definition = { "form" => form, "type" => "lettings", "start_year" => form.start_date.year } form_mappings = { 0 => "current_lettings", 1 => "previous_lettings", -1 => "next_lettings" } diff --git a/spec/features/form/check_answers_page_spec.rb b/spec/features/form/check_answers_page_spec.rb index 359b94210..c5080b4bc 100644 --- a/spec/features/form/check_answers_page_spec.rb +++ b/spec/features/form/check_answers_page_spec.rb @@ -39,7 +39,7 @@ RSpec.describe "Form Check Answers Page" do ) end let(:id) { lettings_log.id } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do sign_in user diff --git a/spec/features/form/conditional_questions_spec.rb b/spec/features/form/conditional_questions_spec.rb index 30eb981ff..4f3f44b5a 100644 --- a/spec/features/form/conditional_questions_spec.rb +++ b/spec/features/form/conditional_questions_spec.rb @@ -13,7 +13,7 @@ RSpec.describe "Form Conditional Questions" do ) end let(:id) { lettings_log.id } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do sign_in user diff --git a/spec/features/form/form_navigation_spec.rb b/spec/features/form/form_navigation_spec.rb index 060a87be3..ffa9bdd88 100644 --- a/spec/features/form/form_navigation_spec.rb +++ b/spec/features/form/form_navigation_spec.rb @@ -32,7 +32,7 @@ RSpec.describe "Form Navigation" do hhmemb: { type: "numeric", answer: 1, path: "household-number-of-members" }, } end - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do sign_in user diff --git a/spec/features/form/validations_spec.rb b/spec/features/form/validations_spec.rb index bc73881a8..8defb15f6 100644 --- a/spec/features/form/validations_spec.rb +++ b/spec/features/form/validations_spec.rb @@ -2,7 +2,7 @@ require "rails_helper" require_relative "helpers" RSpec.describe "validations" do - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } let(:user) { FactoryBot.create(:user) } let(:lettings_log) do FactoryBot.create( diff --git a/spec/helpers/conditional_questions_helper_spec.rb b/spec/helpers/conditional_questions_helper_spec.rb index 84d384b30..c1b8f3a7f 100644 --- a/spec/helpers/conditional_questions_helper_spec.rb +++ b/spec/helpers/conditional_questions_helper_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe ConditionalQuestionsHelper do let(:lettings_log) { FactoryBot.build(:lettings_log) } let(:page) { lettings_log.form.get_page("armed_forces") } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/helpers/question_attribute_helper_spec.rb b/spec/helpers/question_attribute_helper_spec.rb index 8c6be783f..96f2f7ef6 100644 --- a/spec/helpers/question_attribute_helper_spec.rb +++ b/spec/helpers/question_attribute_helper_spec.rb @@ -4,7 +4,7 @@ RSpec.describe QuestionAttributeHelper do let(:lettings_log) { FactoryBot.build(:lettings_log) } let(:form) { lettings_log.form } let(:questions) { form.get_page("rent").questions } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/helpers/tasklist_helper_spec.rb b/spec/helpers/tasklist_helper_spec.rb index cda17365d..ff4902a55 100644 --- a/spec/helpers/tasklist_helper_spec.rb +++ b/spec/helpers/tasklist_helper_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe TasklistHelper do let(:empty_lettings_log) { FactoryBot.create(:lettings_log) } let(:lettings_log) { FactoryBot.create(:lettings_log, :in_progress, needstype: 1) } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/jobs/email_csv_job_spec.rb b/spec/jobs/email_csv_job_spec.rb index f3c62067e..1e3860af9 100644 --- a/spec/jobs/email_csv_job_spec.rb +++ b/spec/jobs/email_csv_job_spec.rb @@ -9,7 +9,7 @@ describe EmailCsvJob do let(:user) { FactoryBot.create(:user) } let(:organisation) { user.organisation } let(:other_organisation) { FactoryBot.create(:organisation) } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/models/form/page_spec.rb b/spec/models/form/page_spec.rb index 364bb374d..bb448aca6 100644 --- a/spec/models/form/page_spec.rb +++ b/spec/models/form/page_spec.rb @@ -14,7 +14,7 @@ RSpec.describe Form::Page, type: :model do let(:subsection) { Form::Subsection.new(subsection_id, subsection_definition, section) } let(:page_id) { "net_income" } let(:page_definition) { subsection_definition["pages"][page_id] } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/models/form/question_spec.rb b/spec/models/form/question_spec.rb index dbaa92376..da59ad354 100644 --- a/spec/models/form/question_spec.rb +++ b/spec/models/form/question_spec.rb @@ -16,7 +16,7 @@ RSpec.describe Form::Question, type: :model do let(:page) { Form::Page.new(page_id, page_definition, subsection) } let(:question_id) { "earnings" } let(:question_definition) { page_definition["questions"][question_id] } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/models/form/section_spec.rb b/spec/models/form/section_spec.rb index 087edd35b..2585b67a8 100644 --- a/spec/models/form/section_spec.rb +++ b/spec/models/form/section_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Form::Section, type: :model do let(:form) { lettings_log.form } let(:section_id) { "household" } let(:section_definition) { form.form_definition["sections"][section_id] } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/models/form/subsection_spec.rb b/spec/models/form/subsection_spec.rb index 9d9dfff26..46880a33a 100644 --- a/spec/models/form/subsection_spec.rb +++ b/spec/models/form/subsection_spec.rb @@ -11,7 +11,7 @@ RSpec.describe Form::Subsection, type: :model do let(:section) { Form::Section.new(section_id, section_definition, form) } let(:subsection_id) { "household_characteristics" } let(:subsection_definition) { section_definition["subsections"][subsection_id] } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do RequestHelper.stub_http_requests diff --git a/spec/models/form_spec.rb b/spec/models/form_spec.rb index 0d0ba0fef..9305b61b9 100644 --- a/spec/models/form_spec.rb +++ b/spec/models/form_spec.rb @@ -209,9 +209,9 @@ RSpec.describe Form, type: :model do describe "when creating a sales log" do it "creates a valid sales form" do sections = [] - form = described_class.new(nil, "2022_23_sales", sections, "sales") + form = described_class.new(nil, 2022, sections, "sales") expect(form.type).to eq("sales") - expect(form.name).to eq("2022_23_sales") + expect(form.name).to eq("2022_2023_sales") expect(form.setup_sections.count).to eq(1) expect(form.setup_sections[0].class).to eq(Form::Sales::Sections::Setup) expect(form.sections.count).to eq(1) diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb index 6ab2ea673..2dbf53595 100644 --- a/spec/models/lettings_log_spec.rb +++ b/spec/models/lettings_log_spec.rb @@ -4,7 +4,7 @@ RSpec.describe LettingsLog do let(:owning_organisation) { FactoryBot.create(:organisation) } let(:different_managing_organisation) { FactoryBot.create(:organisation) } let(:created_by_user) { FactoryBot.create(:user) } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) @@ -1652,7 +1652,7 @@ RSpec.describe LettingsLog do end context "when a lettings log is a supported housing log" do - let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json", "2021_2022") } + let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json") } before do lettings_log.needstype = 2 diff --git a/spec/models/rent_period_spec.rb b/spec/models/rent_period_spec.rb index aa5c688da..266c839ff 100644 --- a/spec/models/rent_period_spec.rb +++ b/spec/models/rent_period_spec.rb @@ -2,7 +2,7 @@ require "rails_helper" RSpec.describe RentPeriod, type: :model do describe "rent period mapping" do - let(:form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(form) diff --git a/spec/models/validations/financial_validations_spec.rb b/spec/models/validations/financial_validations_spec.rb index 2629287ff..895840cdb 100644 --- a/spec/models/validations/financial_validations_spec.rb +++ b/spec/models/validations/financial_validations_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Validations::FinancialValidations do let(:validator_class) { Class.new { include Validations::FinancialValidations } } let(:record) { FactoryBot.create(:lettings_log) } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/models/validations/household_validations_spec.rb b/spec/models/validations/household_validations_spec.rb index 348483867..7b467d384 100644 --- a/spec/models/validations/household_validations_spec.rb +++ b/spec/models/validations/household_validations_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Validations::HouseholdValidations do let(:validator_class) { Class.new { include Validations::HouseholdValidations } } let(:record) { FactoryBot.create(:lettings_log) } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/models/validations/shared_validations_spec.rb b/spec/models/validations/shared_validations_spec.rb index 831569f1b..2be3f52f3 100644 --- a/spec/models/validations/shared_validations_spec.rb +++ b/spec/models/validations/shared_validations_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Validations::SharedValidations do let(:validator_class) { Class.new { include Validations::SharedValidations } } let(:record) { FactoryBot.create(:lettings_log) } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } describe "numeric min max validations" do before do diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 9c33b6edf..f879985b8 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -31,7 +31,7 @@ RSpec.describe FormController, type: :request do ) end let(:headers) { { "Accept" => "text/html" } } - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form) diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index 9d5493630..651655139 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -18,7 +18,7 @@ RSpec.describe LettingsLogsController, type: :request do "Authorization" => basic_credentials, } end - let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") } + let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json") } before do allow(ENV).to receive(:[]) diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb index b6a6734d9..ee17edf0e 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -8,8 +8,8 @@ RSpec.describe Exports::LettingsLogExportService do let(:xml_export_file) { File.open("spec/fixtures/exports/general_needs_log.xml", "r:UTF-8") } let(:local_manifest_file) { File.open("spec/fixtures/exports/manifest.xml", "r:UTF-8") } - let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json", "2021_2022") } - let(:real_2022_2023_form) { Form.new("config/forms/2022_2023.json", "2022_2023") } + let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json") } + let(:real_2022_2023_form) { Form.new("config/forms/2022_2023.json") } let(:expected_master_manifest_filename) { "Manifest_2022_05_01_0001.csv" } let(:expected_master_manifest_rerun) { "Manifest_2022_05_01_0002.csv" } diff --git a/spec/services/imports/lettings_logs_field_import_service_spec.rb b/spec/services/imports/lettings_logs_field_import_service_spec.rb index 1b5a4298f..685617041 100644 --- a/spec/services/imports/lettings_logs_field_import_service_spec.rb +++ b/spec/services/imports/lettings_logs_field_import_service_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Imports::LettingsLogsFieldImportService do let(:storage_service) { instance_double(Storage::S3Service) } let(:logger) { instance_double(ActiveSupport::Logger) } - let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json", "2021_2022") } + let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json") } let(:fixture_directory) { "spec/fixtures/imports/logs" } let(:lettings_log_id) { "0ead17cb-1668-442d-898c-0d52879ff592" } diff --git a/spec/services/imports/lettings_logs_import_service_spec.rb b/spec/services/imports/lettings_logs_import_service_spec.rb index 65cd0c402..c74726216 100644 --- a/spec/services/imports/lettings_logs_import_service_spec.rb +++ b/spec/services/imports/lettings_logs_import_service_spec.rb @@ -6,8 +6,8 @@ RSpec.describe Imports::LettingsLogsImportService do let(:storage_service) { instance_double(Storage::S3Service) } let(:logger) { instance_double(ActiveSupport::Logger) } - let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json", "2021_2022") } - let(:real_2022_2023_form) { Form.new("config/forms/2022_2023.json", "2022_2023") } + let(:real_2021_2022_form) { Form.new("config/forms/2021_2022.json") } + let(:real_2022_2023_form) { Form.new("config/forms/2022_2023.json") } let(:fixture_directory) { "spec/fixtures/imports/logs" } let(:organisation) { FactoryBot.create(:organisation, old_visible_id: "1", provider_type: "PRP") }