Browse Source
			
			
			
			
				
		* Update CYA page * Update UPRN derived fields * Update sales' UPRN questions * Add UPRN lettings questions * Fix specpull/1459/head
				 41 changed files with 1382 additions and 31 deletions
			
			
		| @ -0,0 +1,24 @@ | |||||||
|  | class Form::Lettings::Pages::Address < ::Form::Page | ||||||
|  |   def initialize(id, hsh, subsection) | ||||||
|  |     super | ||||||
|  |     @id = "address" | ||||||
|  |     @header = "What is the property's address?" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def questions | ||||||
|  |     @questions ||= [ | ||||||
|  |       Form::Lettings::Questions::AddressLine1.new(nil, nil, self), | ||||||
|  |       Form::Lettings::Questions::AddressLine2.new(nil, nil, self), | ||||||
|  |       Form::Lettings::Questions::TownOrCity.new(nil, nil, self), | ||||||
|  |       Form::Lettings::Questions::County.new(nil, nil, self), | ||||||
|  |       Form::Lettings::Questions::PostcodeForFullAddress.new(nil, nil, self), | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def routed_to?(log, _current_user = nil) | ||||||
|  |     return false if log.uprn_known.nil? | ||||||
|  |     return false if log.is_supported_housing? | ||||||
|  | 
 | ||||||
|  |     log.uprn_confirmed != 1 || log.uprn_known.zero? | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,28 @@ | |||||||
|  | class Form::Lettings::Pages::Uprn < ::Form::Page | ||||||
|  |   def initialize(id, hsh, subsection) | ||||||
|  |     super | ||||||
|  |     @id = "uprn" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def questions | ||||||
|  |     @questions ||= [ | ||||||
|  |       Form::Lettings::Questions::Uprn.new(nil, nil, self), | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def routed_to?(log, _current_user = nil) | ||||||
|  |     return false if log.is_supported_housing? | ||||||
|  | 
 | ||||||
|  |     log.uprn_known == 1 | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def skip_text | ||||||
|  |     "Enter address instead" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def skip_href(log = nil) | ||||||
|  |     return unless log | ||||||
|  | 
 | ||||||
|  |     "/#{log.model_name.param_key.dasherize}s/#{log.id}/address" | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,17 @@ | |||||||
|  | class Form::Lettings::Pages::UprnConfirmation < ::Form::Page | ||||||
|  |   def initialize(id, hsh, subsection) | ||||||
|  |     super | ||||||
|  |     @id = "uprn_confirmation" | ||||||
|  |     @header = "We found an address that might be this property" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def questions | ||||||
|  |     @questions ||= [ | ||||||
|  |       Form::Lettings::Questions::UprnConfirmation.new(nil, nil, self), | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def routed_to?(log, _current_user = nil) | ||||||
|  |     log.uprn.present? && log.uprn_known == 1 | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | class Form::Lettings::Pages::UprnKnown < ::Form::Page | ||||||
|  |   def initialize(id, hsh, subsection) | ||||||
|  |     super | ||||||
|  |     @id = "uprn_known" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def questions | ||||||
|  |     @questions ||= [ | ||||||
|  |       Form::Lettings::Questions::UprnKnown.new(nil, nil, self), | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def routed_to?(log, _current_user = nil) | ||||||
|  |     !log.is_supported_housing? | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | class Form::Lettings::Questions::AddressLine1 < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "address_line1" | ||||||
|  |     @check_answer_label = "Address" | ||||||
|  |     @header = "Address line 1" | ||||||
|  |     @type = "text" | ||||||
|  |     @plain_label = true | ||||||
|  |     @question_number = 12 | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(log, _current_user = nil) | ||||||
|  |     return true if log.uprn_known.nil? | ||||||
|  |     return false if log.uprn_known&.zero? | ||||||
|  |     return true if log.uprn_confirmed.nil? && log.uprn.present? | ||||||
|  |     return true if log.uprn_known == 1 && log.uprn.blank? | ||||||
|  | 
 | ||||||
|  |     log.uprn_confirmed == 1 | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def answer_label(log, _current_user = nil) | ||||||
|  |     [ | ||||||
|  |       log.address_line1, | ||||||
|  |       log.address_line2, | ||||||
|  |       log.postcode_full, | ||||||
|  |       log.town_or_city, | ||||||
|  |       log.county, | ||||||
|  |     ].select(&:present?).join("\n") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def get_extra_check_answer_value(log) | ||||||
|  |     return unless log.is_la_inferred? | ||||||
|  | 
 | ||||||
|  |     la = LocalAuthority.find_by(code: log.la)&.name | ||||||
|  | 
 | ||||||
|  |     la.presence | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | class Form::Lettings::Questions::AddressLine2 < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "address_line2" | ||||||
|  |     @header = "Address line 2 (optional)" | ||||||
|  |     @type = "text" | ||||||
|  |     @plain_label = true | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(_log = nil, _current_user = nil) | ||||||
|  |     true | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | class Form::Lettings::Questions::County < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "county" | ||||||
|  |     @header = "County (optional)" | ||||||
|  |     @type = "text" | ||||||
|  |     @plain_label = true | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(_log = nil, _current_user = nil) | ||||||
|  |     true | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | class Form::Lettings::Questions::PostcodeForFullAddress < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "postcode_full" | ||||||
|  |     @header = "Postcode" | ||||||
|  |     @type = "text" | ||||||
|  |     @width = 5 | ||||||
|  |     @inferred_check_answers_value = [{ | ||||||
|  |       "condition" => { | ||||||
|  |         "pcodenk" => 1, | ||||||
|  |       }, | ||||||
|  |       "value" => "Not known", | ||||||
|  |     }] | ||||||
|  |     @inferred_answers = { | ||||||
|  |       "la" => { | ||||||
|  |         "is_la_inferred" => true, | ||||||
|  |       }, | ||||||
|  |     } | ||||||
|  |     @plain_label = true | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(_log = nil, _current_user = nil) | ||||||
|  |     true | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | class Form::Lettings::Questions::TownOrCity < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "town_or_city" | ||||||
|  |     @header = "Town or city" | ||||||
|  |     @type = "text" | ||||||
|  |     @plain_label = true | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(_log = nil, _current_user = nil) | ||||||
|  |     true | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | class Form::Lettings::Questions::Uprn < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "uprn" | ||||||
|  |     @check_answer_label = "UPRN" | ||||||
|  |     @header = "What is the property's UPRN" | ||||||
|  |     @type = "text" | ||||||
|  |     @hint_text = "The Unique Property Reference Number (UPRN) is a unique number system created by Ordnance Survey and used by housing providers and sectors UK-wide. For example 10010457355." | ||||||
|  |     @width = 10 | ||||||
|  |     @question_number = 11 | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def unanswered_error_message | ||||||
|  |     I18n.t("validations.property.uprn.invalid") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def get_extra_check_answer_value(log) | ||||||
|  |     value = [ | ||||||
|  |       log.address_line1, | ||||||
|  |       log.address_line2, | ||||||
|  |       log.town_or_city, | ||||||
|  |       log.county, | ||||||
|  |       log.postcode_full, | ||||||
|  |       (LocalAuthority.find_by(code: log.la)&.name if log.la.present?), | ||||||
|  |     ].select(&:present?) | ||||||
|  | 
 | ||||||
|  |     return unless value.any? | ||||||
|  | 
 | ||||||
|  |     "\n\n#{value.join("\n")}" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(log, _current_user = nil) | ||||||
|  |     log.uprn_known != 1 | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | class Form::Lettings::Questions::UprnConfirmation < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "uprn_confirmed" | ||||||
|  |     @header = "Is this the property address?" | ||||||
|  |     @type = "radio" | ||||||
|  |     @answer_options = ANSWER_OPTIONS | ||||||
|  |     @check_answer_label = "Is this the right address?" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   ANSWER_OPTIONS = { | ||||||
|  |     "1" => { "value" => "Yes" }, | ||||||
|  |     "0" => { "value" => "No, I want to enter the address manually" }, | ||||||
|  |   }.freeze | ||||||
|  | 
 | ||||||
|  |   def notification_banner(log = nil) | ||||||
|  |     return unless log&.uprn | ||||||
|  | 
 | ||||||
|  |     { | ||||||
|  |       title: "UPRN: #{log.uprn}", | ||||||
|  |       heading: [ | ||||||
|  |         log.address_line1, | ||||||
|  |         log.address_line2, | ||||||
|  |         log.postcode_full, | ||||||
|  |         log.town_or_city, | ||||||
|  |         log.county, | ||||||
|  |       ].select(&:present?).join("\n"), | ||||||
|  |     } | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def hidden_in_check_answers?(log, _current_user = nil) | ||||||
|  |     log.uprn_known != 1 || log.uprn_confirmed.present? | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,21 @@ | |||||||
|  | class Form::Lettings::Questions::UprnKnown < ::Form::Question | ||||||
|  |   def initialize(id, hsh, page) | ||||||
|  |     super | ||||||
|  |     @id = "uprn_known" | ||||||
|  |     @check_answer_label = "UPRN known?" | ||||||
|  |     @header = "Do you know the property UPRN?" | ||||||
|  |     @type = "radio" | ||||||
|  |     @answer_options = ANSWER_OPTIONS | ||||||
|  |     @hint_text = "The Unique Property Reference Number (UPRN) is a unique number system created by Ordnance Survey and used by housing providers and sectors UK-wide. For example 10010457355.<br><br> | ||||||
|  |     You can continue without the UPRN, but it means we will need you to enter the address of the property." | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   ANSWER_OPTIONS = { | ||||||
|  |     "1" => { "value" => "Yes" }, | ||||||
|  |     "0" => { "value" => "No" }, | ||||||
|  |   }.freeze | ||||||
|  | 
 | ||||||
|  |   def unanswered_error_message | ||||||
|  |     I18n.t("validations.property.uprn_known.invalid") | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,73 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Pages::Address, 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) } | ||||||
|  | 
 | ||||||
|  |   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[address_line1 address_line2 town_or_city county postcode_full]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(page.id).to eq("address") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(page.header).to eq("What is the property's address?") | ||||||
|  |   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 be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has correct routed_to?" do | ||||||
|  |     context "when uprn_known == nil" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: nil) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_confirmed != 1" do | ||||||
|  |       let(:log) do | ||||||
|  |         create(:lettings_log, uprn_known: 1, uprn_confirmed: 0) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_known == 0" do | ||||||
|  |       let(:log) do | ||||||
|  |         create(:lettings_log, uprn_known: 0, uprn_confirmed: 0) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_confirmed == 1 && uprn_known != 0" do | ||||||
|  |       let(:log) do | ||||||
|  |         create(:lettings_log, uprn_known: 1, uprn_confirmed: 1) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,77 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Pages::PropertyLocalAuthority, 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(2022, 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[ | ||||||
|  |         la | ||||||
|  |       ], | ||||||
|  |     ) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(page.id).to eq("property_local_authority") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(page.header).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct description" do | ||||||
|  |     expect(page.description).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct depends_on" do | ||||||
|  |     expect(page.depends_on).to match([{ "is_general_needs?" => true, "is_la_inferred" => false }]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has correct routed_to?" do | ||||||
|  |     context "when start_date < 2023" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1) } | ||||||
|  |       let(:start_date) { Time.utc(2022, 2, 8) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when start_date >= 2023" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1) } | ||||||
|  |       let(:start_date) { Time.utc(2023, 2, 8) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when start_date < 2023 and uprn_known: nil" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: nil) } | ||||||
|  |       let(:start_date) { Time.utc(2023, 2, 8) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       context "when is_la_inferred: true" do | ||||||
|  |         before do | ||||||
|  |           allow(log).to receive(:is_la_inferred?).and_return(true) | ||||||
|  |         end | ||||||
|  | 
 | ||||||
|  |         it "returns true" do | ||||||
|  |           expect(page.routed_to?(log)).to eq(false) | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,59 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Pages::UprnConfirmation, 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) } | ||||||
|  | 
 | ||||||
|  |   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_confirmed]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(page.id).to eq("uprn_confirmation") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(page.header).to eq("We found an address that might be this property") | ||||||
|  |   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 be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has correct routed_to?" do | ||||||
|  |     context "when uprn present && uprn_known == 1 " do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1, uprn: "123456789") } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn = nil" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1, uprn: nil) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_known == 0" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 0, uprn: "123456789") } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,51 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Pages::UprnKnown, 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) } | ||||||
|  | 
 | ||||||
|  |   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_known]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(page.id).to eq("uprn_known") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(page.header).to be_nil | ||||||
|  |   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 be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has correct routed_to?" do | ||||||
|  |     context "when needstype != 2" do | ||||||
|  |       let(:log) { create(:lettings_log, needstype: nil) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when needstype == 2" do | ||||||
|  |       let(:log) { create(:lettings_log, needstype: 2) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,81 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Pages::Uprn, 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) } | ||||||
|  | 
 | ||||||
|  |   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("uprn") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(page.header).to be_nil | ||||||
|  |   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 be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has correct skip_text" do | ||||||
|  |     expect(page.skip_text).to eq("Enter address instead") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has correct routed_to?" do | ||||||
|  |     context "when uprn_known != 1" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 0) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_known == 1" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when needstype == 2" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1, needstype: 2) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(page.routed_to?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has correct skip_href" do | ||||||
|  |     context "when log is nil" do | ||||||
|  |       it "is nil" do | ||||||
|  |         expect(page.skip_href).to be_nil | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when log is present" do | ||||||
|  |       let(:log) { create(:lettings_log) } | ||||||
|  | 
 | ||||||
|  |       it "points to address page" do | ||||||
|  |         expect(page.skip_href(log)).to eq( | ||||||
|  |           "/lettings-logs/#{log.id}/address", | ||||||
|  |         ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,79 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::AddressLine1, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("address_line1") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("Address line 1") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct question_number" do | ||||||
|  |     expect(question.question_number).to eq(12) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to eq("Address") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("text") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct inferred check answers value" do | ||||||
|  |     expect(question.inferred_check_answers_value).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answers_card_number" do | ||||||
|  |     expect(question.check_answers_card_number).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has the correct get_extra_check_answer_value" do | ||||||
|  |     context "when la is not present" do | ||||||
|  |       let(:log) { create(:lettings_log, la: nil) } | ||||||
|  | 
 | ||||||
|  |       it "returns nil" do | ||||||
|  |         expect(question.get_extra_check_answer_value(log)).to be_nil | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when la is present but not inferred" do | ||||||
|  |       let(:log) { create(:lettings_log, la: "E09000003", is_la_inferred: false) } | ||||||
|  | 
 | ||||||
|  |       it "returns nil" do | ||||||
|  |         expect(question.get_extra_check_answer_value(log)).to be_nil | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when la is present but inferred" do | ||||||
|  |       let(:log) { create(:lettings_log, la: "E09000003") } | ||||||
|  | 
 | ||||||
|  |       before do | ||||||
|  |         allow(log).to receive(:is_la_inferred?).and_return(true) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       it "returns the la" do | ||||||
|  |         expect(question.get_extra_check_answer_value(log)).to eq("Barnet") | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::AddressLine2, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("address_line2") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("Address line 2 (optional)") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("text") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct inferred check answers value" do | ||||||
|  |     expect(question.inferred_check_answers_value).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answers_card_number" do | ||||||
|  |     expect(question.check_answers_card_number).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hidden_in_check_answers" do | ||||||
|  |     expect(question.hidden_in_check_answers?).to eq(true) | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::County, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("county") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("County (optional)") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("text") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct inferred check answers value" do | ||||||
|  |     expect(question.inferred_check_answers_value).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answers_card_number" do | ||||||
|  |     expect(question.check_answers_card_number).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hidden_in_check_answers" do | ||||||
|  |     expect(question.hidden_in_check_answers?).to eq(true) | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,62 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::PostcodeForFullAddress, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("postcode_full") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("Postcode") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("text") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct width" do | ||||||
|  |     expect(question.width).to eq(5) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct inferred_answers" do | ||||||
|  |     expect(question.inferred_answers).to eq({ | ||||||
|  |       "la" => { | ||||||
|  |         "is_la_inferred" => true, | ||||||
|  |       }, | ||||||
|  |     }) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct inferred_check_answers_value" do | ||||||
|  |     expect(question.inferred_check_answers_value).to eq([{ | ||||||
|  |       "condition" => { | ||||||
|  |         "pcodenk" => 1, | ||||||
|  |       }, | ||||||
|  |       "value" => "Not known", | ||||||
|  |     }]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hidden_in_check_answers" do | ||||||
|  |     expect(question.hidden_in_check_answers?).to eq(true) | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::TownOrCity, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("town_or_city") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("Town or city") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("text") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct inferred check answers value" do | ||||||
|  |     expect(question.inferred_check_answers_value).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answers_card_number" do | ||||||
|  |     expect(question.check_answers_card_number).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hidden_in_check_answers" do | ||||||
|  |     expect(question.hidden_in_check_answers?).to eq(true) | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,90 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::UprnConfirmation, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("uprn_confirmed") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("Is this the property address?") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to eq("Is this the right address?") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("radio") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct unanswered_error_message" do | ||||||
|  |     expect(question.unanswered_error_message).to eq("You must answer is this the right address?") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "notification_banner" do | ||||||
|  |     context "when address is not present" do | ||||||
|  |       it "returns nil" do | ||||||
|  |         log = create(:lettings_log) | ||||||
|  | 
 | ||||||
|  |         expect(question.notification_banner(log)).to be_nil | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when address is present" do | ||||||
|  |       it "returns formatted value" do | ||||||
|  |         log = create(:lettings_log, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", postcode_full: "AA1 1AA", uprn: "1234") | ||||||
|  | 
 | ||||||
|  |         expect(question.notification_banner(log)).to eq( | ||||||
|  |           { | ||||||
|  |             heading: "1, Test Street\nAA1 1AA\nTest Town\nTest County", | ||||||
|  |             title: "UPRN: 1234", | ||||||
|  |           }, | ||||||
|  |         ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has the correct hidden_in_check_answers" do | ||||||
|  |     context "when uprn_known != 1 && uprn_confirmed == nil" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 0, uprn_confirmed: nil) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(question.hidden_in_check_answers?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_known == 1 && uprn_confirmed == nil" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1, uprn_confirmed: nil) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(question.hidden_in_check_answers?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_known != 1 && uprn_confirmed == 1" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1, uprn_confirmed: 1) } | ||||||
|  | 
 | ||||||
|  |       it "returns true" do | ||||||
|  |         expect(question.hidden_in_check_answers?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,59 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::UprnKnown, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("uprn_known") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("Do you know the property UPRN?") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to eq("UPRN known?") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("radio") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct answer_options" do | ||||||
|  |     expect(question.answer_options).to eq({ | ||||||
|  |       "0" => { "value" => "No" }, | ||||||
|  |       "1" => { "value" => "Yes" }, | ||||||
|  |     }) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has correct conditional for" do | ||||||
|  |     expect(question.conditional_for).to be_nil | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct unanswered_error_message" do | ||||||
|  |     expect(question.unanswered_error_message).to eq("You must answer UPRN known?") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to eq( | ||||||
|  |       "The Unique Property Reference Number (UPRN) is a unique number system created by Ordnance Survey and used by housing providers and sectors UK-wide. For example 10010457355.<br><br> | ||||||
|  |     You can continue without the UPRN, but it means we will need you to enter the address of the property.", | ||||||
|  |     ) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hidden_in_check_answers" do | ||||||
|  |     expect(question.hidden_in_check_answers).to be_nil | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,92 @@ | |||||||
|  | require "rails_helper" | ||||||
|  | 
 | ||||||
|  | RSpec.describe Form::Lettings::Questions::Uprn, type: :model do | ||||||
|  |   subject(:question) { described_class.new(question_id, question_definition, page) } | ||||||
|  | 
 | ||||||
|  |   let(:question_id) { nil } | ||||||
|  |   let(:question_definition) { nil } | ||||||
|  |   let(:page) { instance_double(Form::Page) } | ||||||
|  | 
 | ||||||
|  |   it "has correct page" do | ||||||
|  |     expect(question.page).to eq(page) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct id" do | ||||||
|  |     expect(question.id).to eq("uprn") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct header" do | ||||||
|  |     expect(question.header).to eq("What is the property's UPRN") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct check_answer_label" do | ||||||
|  |     expect(question.check_answer_label).to eq("UPRN") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct type" do | ||||||
|  |     expect(question.type).to eq("text") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "is not marked as derived" do | ||||||
|  |     expect(question.derived?).to be false | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct question_number" do | ||||||
|  |     expect(question.question_number).to eq(11) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct hint" do | ||||||
|  |     expect(question.hint_text).to eq("The Unique Property Reference Number (UPRN) is a unique number system created by Ordnance Survey and used by housing providers and sectors UK-wide. For example 10010457355.") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "has the correct unanswered_error_message" do | ||||||
|  |     expect(question.unanswered_error_message).to eq("UPRN must be 12 digits or less") | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "get_extra_check_answer_value" do | ||||||
|  |     context "when address is not present" do | ||||||
|  |       let(:log) { create(:lettings_log) } | ||||||
|  | 
 | ||||||
|  |       it "returns nil" do | ||||||
|  |         expect(question.get_extra_check_answer_value(log)).to be_nil | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when address is present" do | ||||||
|  |       let(:log) do | ||||||
|  |         create( | ||||||
|  |           :lettings_log, | ||||||
|  |           address_line1: "1, Test Street", | ||||||
|  |           town_or_city: "Test Town", | ||||||
|  |           county: "Test County", | ||||||
|  |           postcode_full: "AA1 1AA", | ||||||
|  |           la: "E09000003", | ||||||
|  |         ) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       it "returns formatted value" do | ||||||
|  |         expect(question.get_extra_check_answer_value(log)).to eq( | ||||||
|  |           "\n\n1, Test Street\nTest Town\nTest County\nAA1 1AA\nWestminster", | ||||||
|  |         ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe "has the correct hidden_in_check_answers" do | ||||||
|  |     context "when uprn_known == 1" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 1) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(question.hidden_in_check_answers?(log)).to eq(false) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context "when uprn_known != 1" do | ||||||
|  |       let(:log) { create(:lettings_log, uprn_known: 0) } | ||||||
|  | 
 | ||||||
|  |       it "returns false" do | ||||||
|  |         expect(question.hidden_in_check_answers?(log)).to eq(true) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
					Loading…
					
					
				
		Reference in new issue