Browse Source

Add a conditional OtherOwnershipType question

pull/884/head
Kat 3 years ago
parent
commit
a7d6c56655
  1. 6
      app/helpers/conditional_questions_helper.rb
  2. 1
      app/models/form/sales/pages/outright_ownership_type.rb
  3. 11
      app/models/form/sales/questions/other_ownership_type.rb
  4. 3
      app/models/form/sales/questions/outright_ownership_type.rb
  5. 2
      app/models/form/sales/subsections/setup.rb
  6. 33
      spec/models/form/sales/questions/other_ownership_type_spec.rb
  7. 6
      spec/models/form/sales/questions/outright_ownership_type_spec.rb
  8. 4
      spec/models/form_handler_spec.rb
  9. 4
      spec/models/form_spec.rb

6
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

1
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

11
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

3
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 = {

2
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

33
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

6
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

4
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

4
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"))

Loading…
Cancel
Save