Browse Source

Remove "startyear_endyear" forms from form handler

pull/875/head
Kat 3 years ago
parent
commit
2afc758ea9
  1. 4
      app/models/form_handler.rb
  2. 3
      spec/features/form/check_answers_page_spec.rb
  3. 3
      spec/features/form/conditional_questions_spec.rb
  4. 3
      spec/features/form/form_navigation_spec.rb
  5. 14
      spec/features/form/validations_spec.rb
  6. 3
      spec/helpers/conditional_questions_helper_spec.rb
  7. 3
      spec/helpers/question_attribute_helper_spec.rb
  8. 3
      spec/helpers/tasklist_helper_spec.rb
  9. 3
      spec/jobs/email_csv_job_spec.rb
  10. 3
      spec/models/form/page_spec.rb
  11. 3
      spec/models/form/question_spec.rb
  12. 3
      spec/models/form/section_spec.rb
  13. 3
      spec/models/form/subsection_spec.rb
  14. 16
      spec/models/form_handler_spec.rb
  15. 3
      spec/models/lettings_log_spec.rb
  16. 3
      spec/models/validations/financial_validations_spec.rb
  17. 3
      spec/models/validations/household_validations_spec.rb
  18. 3
      spec/models/validations/shared_validations_spec.rb
  19. 26
      spec/requests/form_controller_spec.rb
  20. 3
      spec/requests/lettings_logs_controller_spec.rb

4
app/models/form_handler.rb

@ -22,8 +22,7 @@ class FormHandler
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")
{ "2022_2023_sales" => { "form" => Form.new(nil, "2022_2023_sales", sales_sections, "sales"), "type" => "sales" },
"current_sales" => { "form" => current_form, "type" => "sales", "start_year" => current_form.start_date.year },
{ "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
@ -34,7 +33,6 @@ class FormHandler
form_name = File.basename(form_path, ".json")
form = Form.new(form_path, form_name)
lettings_form_definition = { "form" => form, "type" => "lettings", "start_year" => form.start_date.year }
forms[form_name] = lettings_form_definition
form_mappings = { 0 => "current_lettings", 1 => "previous_lettings", -1 => "next_lettings" }
form_to_set = form_mappings[current_collection_start_year - form.start_date.year]

3
spec/features/form/check_answers_page_spec.rb

@ -39,10 +39,11 @@ 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") }
before do
sign_in user
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
context "when the user needs to check their answers for a subsection" do

3
spec/features/form/conditional_questions_spec.rb

@ -13,10 +13,11 @@ 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") }
before do
sign_in user
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
context "with a page where some questions are only conditionally shown, depending on how you answer the first question" do

3
spec/features/form/form_navigation_spec.rb

@ -32,10 +32,11 @@ 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") }
before do
sign_in user
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "Create a new lettings log" do

14
spec/features/form/validations_spec.rb

@ -2,12 +2,7 @@ require "rails_helper"
require_relative "helpers"
RSpec.describe "validations" do
before do
sign_in user
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
end
include Helpers
let(:fake_2021_2022_form) { Form.new("spec/fixtures/forms/2021_2022.json", "2021_2022") }
let(:user) { FactoryBot.create(:user) }
let(:lettings_log) do
FactoryBot.create(
@ -36,6 +31,13 @@ RSpec.describe "validations" do
end
let(:id) { lettings_log.id }
before do
sign_in user
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
include Helpers
describe "Question validation" do
context "when the tenant age is invalid" do
it "shows validation for under 0" do

3
spec/helpers/conditional_questions_helper_spec.rb

@ -3,9 +3,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "conditional questions for page" do

3
spec/helpers/question_attribute_helper_spec.rb

@ -4,9 +4,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "html attributes" do

3
spec/helpers/tasklist_helper_spec.rb

@ -3,9 +3,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "get next incomplete section" do

3
spec/jobs/email_csv_job_spec.rb

@ -9,9 +9,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
context "when a log exists" do

3
spec/models/form/page_spec.rb

@ -14,9 +14,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "has an id" do

3
spec/models/form/question_spec.rb

@ -16,9 +16,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "has an id" do

3
spec/models/form/section_spec.rb

@ -7,9 +7,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "has an id" do

3
spec/models/form/subsection_spec.rb

@ -11,10 +11,11 @@ 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") }
before do
RequestHelper.stub_http_requests
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "has an id" do

16
spec/models/form_handler_spec.rb

@ -32,17 +32,11 @@ RSpec.describe FormHandler do
it "is able to load all the forms" do
all_forms = form_handler.forms
expect(all_forms.count).to be >= 1
expect(all_forms[test_form_name]["form"]).to be_a(Form)
expect(all_forms["current_sales"]["form"]).to be_a(Form)
end
end
describe "Get specific form" do
it "is able to load a specific form" do
form = form_handler.get_form(test_form_name)
expect(form).to be_a(Form)
expect(form.pages.count).to eq(45)
end
it "is able to load a current lettings form" do
form = form_handler.get_form("current_lettings")
expect(form).to be_a(Form)
@ -80,12 +74,8 @@ RSpec.describe FormHandler do
it "loads the form once at boot time" do
form_handler = described_class.instance
expect(Form).not_to receive(:new).with(:any, test_form_name)
expect(form_handler.get_form(test_form_name)).to be_a(Form)
end
it "can get a saleslog form" do
expect(form_handler.get_form("2022_2023_sales")).to be_a(Form)
expect(Form).not_to receive(:new).with(:any, "current_sales")
expect(form_handler.get_form("current_sales")).to be_a(Form)
end
it "keeps track of form type and start year" do

3
spec/models/lettings_log_spec.rb

@ -4,9 +4,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "inherits from log" do

3
spec/models/validations/financial_validations_spec.rb

@ -5,9 +5,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "earnings and income frequency" do

3
spec/models/validations/household_validations_spec.rb

@ -5,9 +5,10 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "reasonable preference validations" do

3
spec/models/validations/shared_validations_spec.rb

@ -5,10 +5,11 @@ 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") }
describe "numeric min max validations" do
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
context "when validating age" do

26
spec/requests/form_controller_spec.rb

@ -5,13 +5,6 @@ RSpec.describe FormController, type: :request do
let(:user) { FactoryBot.create(:user) }
let(:organisation) { user.organisation }
let(:other_organisation) { FactoryBot.create(:organisation) }
let!(:lettings_log) do
FactoryBot.create(
:lettings_log,
owning_organisation: organisation,
managing_organisation: organisation,
)
end
let!(:unauthorized_lettings_log) do
FactoryBot.create(
:lettings_log,
@ -38,12 +31,21 @@ 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") }
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
context "when a user is not signed in" do
let!(:lettings_log) do
FactoryBot.create(
:lettings_log,
owning_organisation: organisation,
managing_organisation: organisation,
)
end
describe "GET" do
it "does not let you get lettings logs pages you don't have access to" do
get "/lettings-logs/#{lettings_log.id}/person-1-age", headers: headers, params: {}
@ -65,6 +67,14 @@ RSpec.describe FormController, type: :request do
end
context "when a user is signed in" do
let!(:lettings_log) do
FactoryBot.create(
:lettings_log,
owning_organisation: organisation,
managing_organisation: organisation,
)
end
before do
allow(user).to receive(:need_two_factor_authentication?).and_return(false)
sign_in user

3
spec/requests/lettings_logs_controller_spec.rb

@ -18,12 +18,13 @@ 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") }
before do
allow(ENV).to receive(:[])
allow(ENV).to receive(:[]).with("API_USER").and_return(api_username)
allow(ENV).to receive(:[]).with("API_KEY").and_return(api_password)
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(FormHandler.instance.forms["2021_2022"]["form"])
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
describe "POST #create" do

Loading…
Cancel
Save