Browse Source

feat: conditional question

pull/1296/head
natdeanlewissoftwire 3 years ago
parent
commit
6f1700fc18
  1. 11
      app/models/form/sales/pages/living_before_purchase.rb
  2. 34
      app/models/form/sales/questions/living_before_purchase.rb
  3. 31
      app/models/form/sales/questions/living_before_purchase_years.rb
  4. 2
      spec/models/form/sales/questions/living_before_purchase_years_spec.rb

11
app/models/form/sales/pages/living_before_purchase.rb

@ -1,7 +1,14 @@
class Form::Sales::Pages::LivingBeforePurchase < ::Form::Page class Form::Sales::Pages::LivingBeforePurchase < ::Form::Page
def questions def questions
@questions ||= [ @questions ||= [
Form::Sales::Questions::LivingBeforePurchase.new(nil, nil, self), living_before_purchase,
] Form::Sales::Questions::LivingBeforePurchaseYears.new(nil, nil, self),
].compact
end
def living_before_purchase
if form.start_date.year >= 2023
Form::Sales::Questions::LivingBeforePurchase.new(nil, nil, self)
end
end end
end end

34
app/models/form/sales/questions/living_before_purchase.rb

@ -1,15 +1,29 @@
class Form::Sales::Questions::LivingBeforePurchase < ::Form::Question class Form::Sales::Questions::LivingBeforePurchase < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "proplen" @id = "proplen_asked"
@check_answer_label = "Number of years living in the property before purchase" @check_answer_label = "Did the buyer live in the property before purchasing it?"
@header = "How long did the buyer(s) live in the property before purchase?" @header = "Did the buyer live in the property before purchasing it?"
@hint_text = "You should round this up to the nearest year. If the buyers haven't been living in the property, enter '0'" @hint_text = nil
@type = "numeric" @type = "radio"
@min = 0 @answer_options = ANSWER_OPTIONS
@max = 80 @conditional_for = {
@step = 1 "proplen" => [0],
@width = 5 }
@suffix = " years" @hidden_in_check_answers = {
"depends_on" => [
{
"proplen_asked" => 0,
},
{
"proplen_asked" => 1,
},
],
}
end end
ANSWER_OPTIONS = {
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
}.freeze
end end

31
app/models/form/sales/questions/living_before_purchase_years.rb

@ -0,0 +1,31 @@
class Form::Sales::Questions::LivingBeforePurchaseYears < ::Form::Question
def initialize(id, hsh, page)
super
@id = "proplen"
@check_answer_label = "Number of years living in the property before purchase"
@header = header_text
@hint_text = hint_text
@type = "numeric"
@min = 0
@max = 80
@step = 1
@width = 5
@suffix = " years"
end
def header_text
if form.start_date.year >= 2023
"How long did they live there?"
else
"How long did the buyer(s) live in the property before purchase?"
end
end
def hint_text
if form.start_date.year >= 2023
"You should round up to the nearest year"
else
"You should round this up to the nearest year. If the buyers haven't been living in the property, enter '0'"
end
end
end

2
spec/models/form/sales/questions/living_before_purchase_spec.rb → spec/models/form/sales/questions/living_before_purchase_years_spec.rb

@ -1,6 +1,6 @@
require "rails_helper" require "rails_helper"
RSpec.describe Form::Sales::Questions::LivingBeforePurchase, type: :model do RSpec.describe Form::Sales::Questions::LivingBeforePurchaseYears, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) } subject(:question) { described_class.new(question_id, question_definition, page) }
let(:question_id) { nil } let(:question_id) { nil }
Loading…
Cancel
Save