You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.7 KiB
115 lines
3.7 KiB
require "rails_helper" |
|
|
|
RSpec.describe Form::Lettings::Pages::AddressSearch, type: :model do |
|
subject(:page) { described_class.new(page_id, page_definition, subsection) } |
|
|
|
let(:page_id) { nil } |
|
let(:page_definition) { nil } |
|
let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) } |
|
let(:start_date) { Time.utc(2024, 4, 1) } |
|
|
|
it "has correct subsection" do |
|
expect(page.subsection).to eq(subsection) |
|
end |
|
|
|
it "has correct questions" do |
|
expect(page.questions.map(&:id)).to eq(%w[uprn]) |
|
end |
|
|
|
it "has the correct id" do |
|
expect(page.id).to eq("address_search") |
|
end |
|
|
|
it "has the correct description" do |
|
expect(page.description).to be_nil |
|
end |
|
|
|
it "has correct depends_on" do |
|
expect(page.depends_on).to eq([{ "is_address_asked?" => true, "manual_address_entry_selected" => false }]) |
|
end |
|
|
|
it "has the correct question number" do |
|
expect(page.question_number).to eq(12) |
|
end |
|
|
|
context "with 2025/26 form" do |
|
let(:start_date) { Time.utc(2025, 4, 1) } |
|
|
|
it "has the correct question number" do |
|
expect(page.question_number).to eq(16) |
|
end |
|
end |
|
|
|
context "when routing to the page" do |
|
let(:form) { FormHandler.instance.forms["current_lettings"] } |
|
let(:subsection) { instance_double(Form::Subsection, form:, enabled?: true) } |
|
|
|
context "when the log is general needs" do |
|
let(:log) { build(:lettings_log, needstype: 1) } |
|
|
|
it "is routed to when the address is not being entered manually" do |
|
log.manual_address_entry_selected = false |
|
expect(page).to be_routed_to(log, nil) |
|
end |
|
|
|
it "is not routed to when the address is being entered manually" do |
|
log.manual_address_entry_selected = true |
|
expect(page).not_to be_routed_to(log, nil) |
|
end |
|
|
|
it "is not routed to when `manual_address_entry_selected` is nil" do |
|
log.manual_address_entry_selected = nil |
|
expect(page).not_to be_routed_to(log, nil) |
|
end |
|
end |
|
|
|
context "when the log is supported housing" do |
|
let(:log) { build(:lettings_log, needstype: 2) } |
|
|
|
context "and the collection year is 2026 or later" do |
|
before do |
|
allow(form).to receive(:start_year_2026_or_later?).and_return(true) |
|
end |
|
|
|
it "is routed to when the address is not being entered manually" do |
|
log.manual_address_entry_selected = false |
|
expect(page).to be_routed_to(log, nil) |
|
end |
|
|
|
it "is not routed to when the address is being entered manually" do |
|
log.manual_address_entry_selected = true |
|
expect(page).not_to be_routed_to(log, nil) |
|
end |
|
|
|
it "is not routed to when `manual_address_entry_selected` is nil" do |
|
log.manual_address_entry_selected = nil |
|
expect(page).not_to be_routed_to(log, nil) |
|
end |
|
end |
|
|
|
context "and the collection year is before 2026" do |
|
before do |
|
allow(form).to receive(:start_year_2026_or_later?).and_return(false) |
|
end |
|
|
|
it "is not routed to, even when the address is not being entered manually" do |
|
log.manual_address_entry_selected = false |
|
expect(page).not_to be_routed_to(log, nil) |
|
end |
|
end |
|
|
|
context "when the scheme has confidential information" do |
|
let(:log) { build(:lettings_log, needstype: 2, scheme: build(:scheme, sensitive: 1)) } |
|
|
|
before do |
|
allow(form).to receive(:start_year_2026_or_later?).and_return(true) |
|
end |
|
|
|
it "is not routed to, even when the address is not being entered manually" do |
|
log.manual_address_entry_selected = false |
|
expect(page).not_to be_routed_to(log, nil) |
|
end |
|
end |
|
end |
|
end |
|
end
|
|
|