Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLDC-3344: Sales CSV download ecstat2 child label bug fix #2801

Merged
2 changes: 2 additions & 0 deletions app/models/derived_variables/sales_log_variables.rb
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,8 @@ def child_under_16_constraints!
(start_index..6).each do |idx|
if age_under_16?(idx)
self["ecstat#{idx}"] = 9
elsif self["ecstat#{idx}"] == 9
self["ecstat#{idx}"] = nil
end
end
Copy link
Contributor Author

@Dinssa Dinssa Nov 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added this so a user can change the age of a person that was first set as under 16 to another age above 16. At the moment should they want to do that they would get an error:
Answer cannot be over 16 as person’s 2 working situation is ‘child under 16‘.

As the working situation question for a child is not one they can access they'd get stuck. Now should they change the age e.g. to 17, the next question will be to choose the working situation.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add some tests for this to make sure it doesn't clear it when we don't want it to?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, added

end
Expand Down
18 changes: 18 additions & 0 deletions app/models/form/sales/questions/buyer2_working_situation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@ def answer_options
"6" => { "value" => "Not seeking work" },
"7" => { "value" => "Full-time student" },
"8" => { "value" => "Unable to work due to long term sick or disability" },
"9" => {
"value" => "Child under 16",
"depends_on" => [
{ "saledate" => { "operator" => "<", "operand" => Time.zone.local(2024, 4, 1) } },
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If form.start_year_2025_or_later? the saledate can't be before 2024?

Maybe it's worth having answer_options and displayed_answer_options as we do on some other questions?

{ "age2_known" => 1 },
{ "age2_known" => nil },
{ "age2" => { "operator" => "<", "operand" => 16 } },
],
},
"0" => { "value" => "Other" },
"10" => { "value" => "Buyer prefers not to say" },
}.freeze
Expand All @@ -41,6 +50,15 @@ def answer_options
"0" => { "value" => "Other" },
"10" => { "value" => "Buyer prefers not to say" },
"7" => { "value" => "Full-time student" },
"9" => {
"value" => "Child under 16",
"depends_on" => [
{ "saledate" => { "operator" => "<", "operand" => Time.zone.local(2024, 4, 1) } },
{ "age2_known" => 1 },
{ "age2_known" => nil },
{ "age2" => { "operator" => "<", "operand" => 16 } },
],
},
}.freeze
end
end
Expand Down
13 changes: 11 additions & 2 deletions spec/models/form/sales/questions/buyer2_working_situation_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,22 +36,31 @@
"0" => { "value" => "Other" },
"10" => { "value" => "Buyer prefers not to say" },
"7" => { "value" => "Full-time student" },
"9" => {
"value" => "Child under 16",
"depends_on" => [
{ "saledate" => { "operator" => "<", "operand" => Time.zone.local(2024, 4, 1) } },
{ "age2_known" => 1 },
{ "age2_known" => nil },
{ "age2" => { "operator" => "<", "operand" => 16 } },
],
},
})
end

context "with start year before 2025" do
let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1), start_year_2025_or_later?: false) }

it "uses the old ordering for answer options" do
expect(question.answer_options.keys).to eq(%w[1 2 3 4 6 8 5 0 10 7])
expect(question.answer_options.keys).to eq(%w[1 2 3 4 6 8 5 0 10 7 9])
end
end

context "with start year from 2025" do
let(:form) { instance_double(Form, start_date: Time.zone.local(2025, 4, 1), start_year_2025_or_later?: true) }

it "uses the new ordering for answer options" do
expect(question.answer_options.keys).to eq(%w[1 2 3 4 5 6 7 8 0 10])
expect(question.answer_options.keys).to eq(%w[1 2 3 4 5 6 7 8 9 0 10])
end
end

Expand Down
Loading