Browse Source

Update some routed to methods

CLDC-3851-refactor-depends-on
Kat 3 months ago
parent
commit
5b73278eaf
  1. 12
      app/models/form/lettings/pages/outstanding.rb
  2. 18
      app/models/form/lettings/pages/person_working_situation.rb
  3. 62
      spec/models/form/lettings/pages/outstanding_spec.rb
  4. 51
      spec/models/form/lettings/pages/person_working_situation_spec.rb

12
app/models/form/lettings/pages/outstanding.rb

@ -2,15 +2,15 @@ class Form::Lettings::Pages::Outstanding < ::Form::Page
def initialize(id, hsh, subsection) def initialize(id, hsh, subsection)
super super
@id = "outstanding" @id = "outstanding"
@depends_on = [
{ "hb" => 1, "household_charge" => 0 },
{ "hb" => 1, "household_charge" => nil },
{ "hb" => 6, "household_charge" => 0 },
{ "hb" => 6, "household_charge" => nil },
]
end end
def questions def questions
@questions ||= [Form::Lettings::Questions::Hbrentshortfall.new(nil, nil, self)] @questions ||= [Form::Lettings::Questions::Hbrentshortfall.new(nil, nil, self)]
end end
def routed_to?(log, _)
return false unless super && [1, 6].include?(log.hb)
(log.household_charge.present? && log.household_charge.zero? || log.household_charge.nil?)
end
end end

18
app/models/form/lettings/pages/person_working_situation.rb

@ -2,20 +2,18 @@ class Form::Lettings::Pages::PersonWorkingSituation < ::Form::Page
def initialize(id, hsh, subsection, person_index:) def initialize(id, hsh, subsection, person_index:)
super(id, hsh, subsection) super(id, hsh, subsection)
@id = "person_#{person_index}_working_situation" @id = "person_#{person_index}_working_situation"
@depends_on = [
{
"details_known_#{person_index}" => 0,
"age#{person_index}" => {
"operator" => ">",
"operand" => 15,
},
},
{ "details_known_#{person_index}" => 0, "age#{person_index}" => nil },
]
@person_index = person_index @person_index = person_index
end end
def questions def questions
@questions ||= [Form::Lettings::Questions::PersonWorkingSituation.new(nil, nil, self, person_index: @person_index)] @questions ||= [Form::Lettings::Questions::PersonWorkingSituation.new(nil, nil, self, person_index: @person_index)]
end end
def routed_to?(log, _)
return false unless super && log.send("details_known_#{@person_index}").zero?
age = log.send("age#{@person_index}")
age.nil? || age > 15
end
end end

62
spec/models/form/lettings/pages/outstanding_spec.rb

@ -0,0 +1,62 @@
require "rails_helper"
RSpec.describe Form::Lettings::Pages::Outstanding, type: :model do
subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil }
let(:page_definition) { nil }
let(:form) { Form.new(nil, 2024, [], "lettings") }
let(:subsection) { instance_double(Form::Subsection, enabled?: true, form:, depends_on: nil) }
describe "#routed_to?" do
let(:log) { create(:lettings_log) }
context "when hb is 1 and household_charge is 0" do
let(:log) { build(:lettings_log, hb: 1, household_charge: 0) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to eq(true)
end
end
context "when hb is 6 and household_charge is 0" do
let(:log) { build(:lettings_log, hb: 6, household_charge: 0) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to eq(true)
end
end
context "when hb is 1 and household_charge is nil" do
let(:log) { build(:lettings_log, hb: 1, household_charge: nil) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to eq(true)
end
end
context "when hb is 6 and household_charge is nil" do
let(:log) { build(:lettings_log, hb: 6, household_charge: nil) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to eq(true)
end
end
context "when hb is not 1 or 6" do
let(:log) { build(:lettings_log, hb: 2, household_charge: nil) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to eq(false)
end
end
context "when household_charge is not nil or 0" do
let(:log) { build(:lettings_log, hb: 6, household_charge: 1) }
it "is not routed to" do
expect(page.routed_to?(log, nil)).to eq(false)
end
end
end
end

51
spec/models/form/lettings/pages/person_working_situation_spec.rb

@ -4,7 +4,8 @@ RSpec.describe Form::Lettings::Pages::PersonWorkingSituation, type: :model do
subject(:page) { described_class.new(nil, page_definition, subsection, person_index:) } subject(:page) { described_class.new(nil, page_definition, subsection, person_index:) }
let(:page_definition) { nil } let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2024, 4, 1))) } let(:form) { Form.new(nil, 2024, [], "lettings") }
let(:subsection) { instance_double(Form::Subsection, enabled?: true, form:, depends_on: nil) }
let(:person_index) { 2 } let(:person_index) { 2 }
it "has correct subsection" do it "has correct subsection" do
@ -24,13 +25,38 @@ RSpec.describe Form::Lettings::Pages::PersonWorkingSituation, type: :model do
expect(page.id).to eq("person_2_working_situation") expect(page.id).to eq("person_2_working_situation")
end end
it "has correct depends_on" do describe "routed_to?" do
expect(page.depends_on).to eq( context "with details_known_2 = 0 and age2 > 15" do
[ let(:log) { build(:lettings_log, details_known_2: 0, age2: 16) }
{ "age2" => { "operand" => 15, "operator" => ">" }, "details_known_2" => 0 },
{ "age2" => nil, "details_known_2" => 0 }, it "is routed to" do
], expect(page.routed_to?(log, nil)).to eq(true)
) end
end
context "with details_known_2 = 0 and age2 = nil" do
let(:log) { build(:lettings_log, details_known_2: 0, age2: nil) }
it "is routed to" do
expect(page.routed_to?(log, nil)).to eq(true)
end
end
context "with details_known_2 not 0" do
let(:log) { build(:lettings_log, details_known_2: 1, age2: 16) }
it "is not routed to" do
expect(page.routed_to?(log, nil)).to eq(false)
end
end
context "with age2 < 15" do
let(:log) { build(:lettings_log, details_known_2: 0, age2: 15) }
it "is not routed to" do
expect(page.routed_to?(log, nil)).to eq(false)
end
end
end end
end end
@ -44,14 +70,5 @@ RSpec.describe Form::Lettings::Pages::PersonWorkingSituation, type: :model do
it "has the correct id" do it "has the correct id" do
expect(page.id).to eq("person_3_working_situation") expect(page.id).to eq("person_3_working_situation")
end end
it "has correct depends_on" do
expect(page.depends_on).to eq(
[
{ "age3" => { "operand" => 15, "operator" => ">" }, "details_known_3" => 0 },
{ "age3" => nil, "details_known_3" => 0 },
],
)
end
end end
end end

Loading…
Cancel
Save