Browse Source

CLDC-4230: add prefers not to say option to ALL age questions

CLDC-4230-prefers-not-to-say-consistency-2
Nat Dean-Lewis 2 weeks ago
parent
commit
bd1b4c77ad
  1. 5
      app/models/form/lettings/questions/age.rb
  2. 5
      app/models/form/lettings/questions/age1.rb
  3. 12
      app/models/form/lettings/questions/age1_known.rb
  4. 11
      app/models/form/lettings/questions/age_known.rb
  5. 14
      app/models/form/sales/questions/age2.rb
  6. 12
      app/models/form/sales/questions/buyer2_age_known.rb
  7. 14
      app/models/form/sales/questions/person_age.rb
  8. 12
      app/models/form/sales/questions/person_age_known.rb
  9. 4
      spec/models/form/lettings/questions/age1_known_spec.rb
  10. 7
      spec/models/form/lettings/questions/age_known_spec.rb
  11. 10
      spec/models/form/sales/questions/buyer2_age_known_spec.rb
  12. 13
      spec/models/form/sales/questions/person_age_known_spec.rb

5
app/models/form/lettings/questions/age.rb

@ -5,7 +5,10 @@ class Form::Lettings::Questions::Age < ::Form::Question
@copy_key = "lettings.household_characteristics.age#{person_index}.age#{person_index}"
@type = "numeric"
@width = 2
@inferred_check_answers_value = [{ "condition" => { "age#{person_index}_known" => 1 }, "value" => "Not known" }]
@inferred_check_answers_value = [
{ "condition" => { "age#{person_index}_known" => 1 }, "value" => "Not known" },
{ "condition" => { "age#{person_index}_known" => 2 }, "value" => "Prefers not to say" },
]
@check_answers_card_number = person_index
@max = 120
@min = 1

5
app/models/form/lettings/questions/age1.rb

@ -5,7 +5,10 @@ class Form::Lettings::Questions::Age1 < ::Form::Question
@copy_key = "lettings.household_characteristics.age1.age1"
@type = "numeric"
@width = 2
@inferred_check_answers_value = [{ "condition" => { "age1_known" => 1 }, "value" => "Not known" }]
@inferred_check_answers_value = [
{ "condition" => { "age1_known" => 1 }, "value" => "Not known" },
{ "condition" => { "age1_known" => 2 }, "value" => "Prefers not to say" },
]
@check_answers_card_number = 1
@max = 120
@min = 16

12
app/models/form/lettings/questions/age1_known.rb

@ -7,11 +7,19 @@ class Form::Lettings::Questions::Age1Known < ::Form::Question
@check_answers_card_number = 1
@answer_options = ANSWER_OPTIONS
@conditional_for = { "age1" => [0] }
@hidden_in_check_answers = { "depends_on" => [{ "age1_known" => 0 }, { "age1_known" => 1 }] }
@hidden_in_check_answers = { "depends_on" => [{ "age1_known" => 0 }, { "age1_known" => 1 }, { "age1_known" => 2 }] }
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" } }.freeze
ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" }, "2" => { "value" => "Tenant prefers not to say" } }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 32, 2024 => 31, 2025 => 31, 2026 => 30 }.freeze
def label_from_value(value, _log = nil, _user = nil)
return unless value
return "Prefers not to say" if value.to_i == 2
super
end
end

11
app/models/form/lettings/questions/age_known.rb

@ -11,13 +11,14 @@ class Form::Lettings::Questions::AgeKnown < ::Form::Question
"depends_on" => [
{ "age#{person_index}_known" => 0 },
{ "age#{person_index}_known" => 1 },
{ "age#{person_index}_known" => 2 },
],
}
@person_index = person_index
@question_number = question_number
end
ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" } }.freeze
ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" }, "2" => { "value" => "Person prefers not to say" } }.freeze
def question_number
base_question_number = case form.start_date.year
@ -35,4 +36,12 @@ class Form::Lettings::Questions::AgeKnown < ::Form::Question
base_question_number + (form.person_question_count * @person_index)
end
def label_from_value(value, _log = nil, _user = nil)
return unless value
return "Prefers not to say" if value.to_i == 2
super
end
end

14
app/models/form/sales/questions/age2.rb

@ -5,10 +5,16 @@ class Form::Sales::Questions::Age2 < ::Form::Question
@copy_key = "sales.household_characteristics.age2.buyer.age2"
@type = "numeric"
@width = 2
@inferred_check_answers_value = [{
"condition" => { "age2_known" => 1 },
"value" => "Not known",
}]
@inferred_check_answers_value = [
{
"condition" => { "age2_known" => 1 },
"value" => "Not known",
},
{
"condition" => { "age2_known" => 2 },
"value" => "Prefers not to say",
},
]
@check_answers_card_number = 2
@max = 110
@min = 16

12
app/models/form/sales/questions/buyer2_age_known.rb

@ -16,6 +16,9 @@ class Form::Sales::Questions::Buyer2AgeKnown < ::Form::Question
{
"age2_known" => 1,
},
{
"age2_known" => 2,
},
],
}
@check_answers_card_number = 2
@ -25,7 +28,16 @@ class Form::Sales::Questions::Buyer2AgeKnown < ::Form::Question
ANSWER_OPTIONS = {
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
"2" => { "value" => "Buyer prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 28, 2024 => 30, 2025 => 28, 2026 => 30 }.freeze
def label_from_value(value, _log = nil, _user = nil)
return unless value
return "Prefers not to say" if value.to_i == 2
super
end
end

14
app/models/form/sales/questions/person_age.rb

@ -4,10 +4,16 @@ class Form::Sales::Questions::PersonAge < ::Form::Question
@type = "numeric"
@copy_key = person_index == 2 ? "sales.household_characteristics.age2.person.age2" : "sales.household_characteristics.age#{person_index}.age#{person_index}"
@width = 3
@inferred_check_answers_value = [{
"condition" => { "age#{person_index}_known" => 1 },
"value" => "Not known",
}]
@inferred_check_answers_value = [
{
"condition" => { "age#{person_index}_known" => 1 },
"value" => "Not known",
},
{
"condition" => { "age#{person_index}_known" => 2 },
"value" => "Prefers not to say",
},
]
@check_answers_card_number = person_index
@min = 0
@max = 110

12
app/models/form/sales/questions/person_age_known.rb

@ -15,6 +15,9 @@ class Form::Sales::Questions::PersonAgeKnown < ::Form::Question
{
"age#{person_index}_known" => 1,
},
{
"age#{person_index}_known" => 2,
},
],
}
@check_answers_card_number = person_index
@ -25,6 +28,7 @@ class Form::Sales::Questions::PersonAgeKnown < ::Form::Question
ANSWER_OPTIONS = {
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
"2" => { "value" => "Person prefers not to say" },
}.freeze
BASE_QUESTION_NUMBERS = { 2023 => 29, 2024 => 31, 2025 => 29, 2026 => 30 }.freeze
@ -33,4 +37,12 @@ class Form::Sales::Questions::PersonAgeKnown < ::Form::Question
base_question_number + (form.person_question_count * @person_index)
end
def label_from_value(value, _log = nil, _user = nil)
return unless value
return "Prefers not to say" if value.to_i == 2
super
end
end

4
spec/models/form/lettings/questions/age1_known_spec.rb

@ -30,6 +30,7 @@ RSpec.describe Form::Lettings::Questions::Age1Known, type: :model do
expect(question.answer_options).to eq({
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
"2" => { "value" => "Tenant prefers not to say" },
})
end
@ -53,6 +54,9 @@ RSpec.describe Form::Lettings::Questions::Age1Known, type: :model do
{
"age1_known" => 1,
},
{
"age1_known" => 2,
},
],
},
)

7
spec/models/form/lettings/questions/age_known_spec.rb

@ -23,6 +23,7 @@ RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do
expect(question.answer_options).to eq({
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
"2" => { "value" => "Person prefers not to say" },
})
end
@ -47,6 +48,9 @@ RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do
{
"age2_known" => 1,
},
{
"age2_known" => 2,
},
],
},
)
@ -80,6 +84,9 @@ RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do
{
"age3_known" => 1,
},
{
"age3_known" => 2,
},
],
},
)

10
spec/models/form/sales/questions/buyer2_age_known_spec.rb

@ -27,6 +27,7 @@ RSpec.describe Form::Sales::Questions::Buyer2AgeKnown, type: :model do
expect(question.answer_options).to eq({
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
"2" => { "value" => "Buyer prefers not to say" },
})
end
@ -38,10 +39,11 @@ RSpec.describe Form::Sales::Questions::Buyer2AgeKnown, type: :model do
it "has correct hidden in check answers" do
expect(question.hidden_in_check_answers).to eq({
"depends_on" => [{
"age2_known" => 0,
},
{ "age2_known" => 1 }],
"depends_on" => [
{ "age2_known" => 0 },
{ "age2_known" => 1 },
{ "age2_known" => 2 },
],
})
end

13
spec/models/form/sales/questions/person_age_known_spec.rb

@ -24,6 +24,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
expect(question.answer_options).to eq({
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
"2" => { "value" => "Person prefers not to say" },
})
end
@ -51,6 +52,9 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
{
"age2_known" => 1,
},
{
"age2_known" => 2,
},
],
},
)
@ -85,6 +89,9 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
{
"age3_known" => 1,
},
{
"age3_known" => 2,
},
],
},
)
@ -119,6 +126,9 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
{
"age4_known" => 1,
},
{
"age4_known" => 2,
},
],
},
)
@ -153,6 +163,9 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
{
"age5_known" => 1,
},
{
"age5_known" => 2,
},
],
},
)

Loading…
Cancel
Save