diff --git a/app/helpers/conditional_questions_helper.rb b/app/helpers/conditional_questions_helper.rb index c174c2692..be6a9910a 100644 --- a/app/helpers/conditional_questions_helper.rb +++ b/app/helpers/conditional_questions_helper.rb @@ -1,6 +1,6 @@ module ConditionalQuestionsHelper def conditional_questions_for_page(page) - page.questions.map(&:conditional_for).compact.map(&:keys).flatten + page.questions.map(&:conditional_for).compact.map(&:keys).flatten.map(&:to_s) end def find_conditional_question(page, question, answer_value) @@ -9,10 +9,10 @@ module ConditionalQuestionsHelper conditional_key = question.conditional_for.find { |_, conditional_value| conditional_value.map(&:to_s).include? answer_value.to_s }&.first - page.questions.find { |q| q.id == conditional_key } + page.questions.find { |q| q.id.to_s == conditional_key.to_s } end def display_question_key_div(page, question) - "style='display:none;'".html_safe if conditional_questions_for_page(page).include?(question.id) || question.requires_js + "style='display:none;'".html_safe if conditional_questions_for_page(page).include?(question.id.to_s) || question.requires_js end end diff --git a/app/models/form/sales/pages/outright_ownership_type.rb b/app/models/form/sales/pages/outright_ownership_type.rb index 40240ed18..6c48e7107 100644 --- a/app/models/form/sales/pages/outright_ownership_type.rb +++ b/app/models/form/sales/pages/outright_ownership_type.rb @@ -13,6 +13,7 @@ class Form::Sales::Pages::OutrightOwnershipType < ::Form::Page def questions @questions ||= [ Form::Sales::Questions::OutrightOwnershipType.new(nil, nil, self), + Form::Sales::Questions::OtherOwnershipType.new(nil, nil, self), ] end end diff --git a/app/models/form/sales/questions/other_ownership_type.rb b/app/models/form/sales/questions/other_ownership_type.rb new file mode 100644 index 000000000..23995bb9e --- /dev/null +++ b/app/models/form/sales/questions/other_ownership_type.rb @@ -0,0 +1,11 @@ +class Form::Sales::Questions::OtherOwnershipType < ::Form::Question + def initialize(id, hsh, page) + super + @id = "othtype" + @check_answer_label = "Type of other sale" + @header = "What type of sale is it?" + @type = "text" + @width = 10 + @page = page + end +end diff --git a/app/models/form/sales/questions/outright_ownership_type.rb b/app/models/form/sales/questions/outright_ownership_type.rb index 0edefc8ef..6c1ce2ba7 100644 --- a/app/models/form/sales/questions/outright_ownership_type.rb +++ b/app/models/form/sales/questions/outright_ownership_type.rb @@ -7,6 +7,9 @@ class Form::Sales::Questions::OutrightOwnershipType < ::Form::Question @type = "radio" @answer_options = ANSWER_OPTIONS @page = page + @conditional_for = { + "othtype": [12], + } end ANSWER_OPTIONS = { diff --git a/app/models/form/sales/subsections/setup.rb b/app/models/form/sales/subsections/setup.rb index 9225e8f0a..5b966efe4 100644 --- a/app/models/form/sales/subsections/setup.rb +++ b/app/models/form/sales/subsections/setup.rb @@ -14,8 +14,8 @@ class Form::Sales::Subsections::Setup < ::Form::Subsection Form::Sales::Pages::PurchaserCode.new(nil, nil, self), Form::Sales::Pages::OwnershipScheme.new(nil, nil, self), Form::Sales::Pages::SharedOwnershipType.new(nil, nil, self), - Form::Sales::Pages::OutrightOwnershipType.new(nil, nil, self), Form::Sales::Pages::DiscountedOwnershipType.new(nil, nil, self), + Form::Sales::Pages::OutrightOwnershipType.new(nil, nil, self), Form::Sales::Pages::JointPurchase.new(nil, nil, self), ] end diff --git a/spec/models/form/sales/questions/other_ownership_type_spec.rb b/spec/models/form/sales/questions/other_ownership_type_spec.rb new file mode 100644 index 000000000..0929e7d8a --- /dev/null +++ b/spec/models/form/sales/questions/other_ownership_type_spec.rb @@ -0,0 +1,33 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::OtherOwnershipType, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page) } + + let(:question_id) { nil } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("othtype") + end + + it "has the correct header" do + expect(question.header).to eq("What type of sale is it?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Type of other sale") + end + + it "has the correct type" do + expect(question.type).to eq("text") + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end +end diff --git a/spec/models/form/sales/questions/outright_ownership_type_spec.rb b/spec/models/form/sales/questions/outright_ownership_type_spec.rb index ad0216846..689ff35bc 100644 --- a/spec/models/form/sales/questions/outright_ownership_type_spec.rb +++ b/spec/models/form/sales/questions/outright_ownership_type_spec.rb @@ -37,4 +37,10 @@ RSpec.describe Form::Sales::Questions::OutrightOwnershipType, type: :model do "12" => { "value" => "Other sale" }, }) end + + it "has correct conditional for" do + expect(question.conditional_for).to eq({ + "othtype": [12], + }) + end end diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index 03d1dde44..19bb10675 100644 --- a/spec/models/form_handler_spec.rb +++ b/spec/models/form_handler_spec.rb @@ -61,14 +61,14 @@ RSpec.describe FormHandler do it "is able to load a current sales form" do form = form_handler.get_form("current_sales") expect(form).to be_a(Form) - expect(form.pages.count).to eq(8) + expect(form.pages.count).to eq(9) expect(form.name).to eq("2022_2023_sales") end it "is able to load a previous sales form" do form = form_handler.get_form("previous_sales") expect(form).to be_a(Form) - expect(form.pages.count).to eq(8) + expect(form.pages.count).to eq(9) expect(form.name).to eq("2021_2022_sales") end end diff --git a/spec/models/form_spec.rb b/spec/models/form_spec.rb index b99406206..c9d2a3f36 100644 --- a/spec/models/form_spec.rb +++ b/spec/models/form_spec.rb @@ -218,9 +218,9 @@ RSpec.describe Form, type: :model do expect(form.sections[0].class).to eq(Form::Sales::Sections::Setup) expect(form.subsections.count).to eq(1) expect(form.subsections.first.id).to eq("setup") - expect(form.pages.count).to eq(8) + expect(form.pages.count).to eq(9) expect(form.pages.first.id).to eq("organisation") - expect(form.questions.count).to eq(8) + expect(form.questions.count).to eq(10) expect(form.questions.first.id).to eq("owning_organisation_id") expect(form.start_date).to eq(Time.zone.parse("2022-04-01")) expect(form.end_date).to eq(Time.zone.parse("2023-07-01"))