diff --git a/Gemfile b/Gemfile
index 741f484bd..f23a4db6f 100644
--- a/Gemfile
+++ b/Gemfile
@@ -70,6 +70,7 @@ group :development, :test do
gem "byebug", platforms: %i[mri mingw x64_mingw]
gem "dotenv-rails"
gem "factory_bot_rails"
+ gem "faker"
gem "pry-byebug"
gem "parallel_tests"
@@ -93,7 +94,6 @@ group :test do
gem "capybara", require: false
gem "capybara-lockstep"
gem "capybara-screenshot"
- gem "faker"
gem "rspec-rails", require: false
gem "selenium-webdriver", require: false
gem "simplecov", require: false
diff --git a/app/models/form/lettings/pages/uprn.rb b/app/models/form/lettings/pages/uprn.rb
index 7b6b90f1a..f50111798 100644
--- a/app/models/form/lettings/pages/uprn.rb
+++ b/app/models/form/lettings/pages/uprn.rb
@@ -6,14 +6,13 @@ class Form::Lettings::Pages::Uprn < ::Form::Page
def questions
@questions ||= [
+ Form::Lettings::Questions::UprnKnown.new(nil, nil, self),
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
+ !log.is_supported_housing?
end
def skip_text
diff --git a/app/models/form/lettings/pages/uprn_known.rb b/app/models/form/lettings/pages/uprn_known.rb
deleted file mode 100644
index 1ded1ba82..000000000
--- a/app/models/form/lettings/pages/uprn_known.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-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
diff --git a/app/models/form/lettings/questions/uprn.rb b/app/models/form/lettings/questions/uprn.rb
index efe9a4ea4..95ade90ad 100644
--- a/app/models/form/lettings/questions/uprn.rb
+++ b/app/models/form/lettings/questions/uprn.rb
@@ -5,9 +5,14 @@ class Form::Lettings::Questions::Uprn < ::Form::Question
@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
+ @inferred_check_answers_value = [
+ {
+ "condition" => { "uprn_known" => 0 },
+ "value" => "Not known",
+ },
+ ]
end
def unanswered_error_message
@@ -15,6 +20,8 @@ class Form::Lettings::Questions::Uprn < ::Form::Question
end
def get_extra_check_answer_value(log)
+ return unless log.uprn_known == 1
+
value = [
log.address_line1,
log.address_line2,
@@ -28,8 +35,4 @@ class Form::Lettings::Questions::Uprn < ::Form::Question
"\n\n#{value.join("\n")}"
end
-
- def hidden_in_check_answers?(log, _current_user = nil)
- log.uprn_known != 1
- end
end
diff --git a/app/models/form/lettings/questions/uprn_known.rb b/app/models/form/lettings/questions/uprn_known.rb
index d206885fb..816a31ffb 100644
--- a/app/models/form/lettings/questions/uprn_known.rb
+++ b/app/models/form/lettings/questions/uprn_known.rb
@@ -8,6 +8,8 @@ class Form::Lettings::Questions::UprnKnown < ::Form::Question
@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.
You can continue without the UPRN, but it means we will need you to enter the address of the property."
+ @conditional_for = { "uprn" => [1] }
+ @hidden_in_check_answers = true
end
ANSWER_OPTIONS = {
diff --git a/app/models/form/lettings/subsections/property_information.rb b/app/models/form/lettings/subsections/property_information.rb
index 2e21b8c5a..1290f7cf2 100644
--- a/app/models/form/lettings/subsections/property_information.rb
+++ b/app/models/form/lettings/subsections/property_information.rb
@@ -30,7 +30,6 @@ class Form::Lettings::Subsections::PropertyInformation < ::Form::Subsection
def uprn_questions
if form.start_date.year >= 2023
[
- Form::Lettings::Pages::UprnKnown.new(nil, nil, self),
Form::Lettings::Pages::Uprn.new(nil, nil, self),
Form::Lettings::Pages::UprnConfirmation.new(nil, nil, self),
Form::Lettings::Pages::Address.new(nil, nil, self),
diff --git a/app/models/form/sales/pages/uprn.rb b/app/models/form/sales/pages/uprn.rb
index e1835f8ca..ad247207f 100644
--- a/app/models/form/sales/pages/uprn.rb
+++ b/app/models/form/sales/pages/uprn.rb
@@ -6,6 +6,7 @@ class Form::Sales::Pages::Uprn < ::Form::Page
def questions
@questions ||= [
+ Form::Sales::Questions::UprnKnown.new(nil, nil, self),
Form::Sales::Questions::Uprn.new(nil, nil, self),
]
end
diff --git a/app/models/form/sales/pages/uprn_known.rb b/app/models/form/sales/pages/uprn_known.rb
deleted file mode 100644
index e2cbfe63f..000000000
--- a/app/models/form/sales/pages/uprn_known.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class Form::Sales::Pages::UprnKnown < ::Form::Page
- def initialize(id, hsh, subsection)
- super
- @id = "uprn_known"
- end
-
- def questions
- @questions ||= [
- Form::Sales::Questions::UprnKnown.new(nil, nil, self),
- ]
- end
-end
diff --git a/app/models/form/sales/questions/uprn.rb b/app/models/form/sales/questions/uprn.rb
index 7967a2035..6b51260a7 100644
--- a/app/models/form/sales/questions/uprn.rb
+++ b/app/models/form/sales/questions/uprn.rb
@@ -5,9 +5,14 @@ class Form::Sales::Questions::Uprn < ::Form::Question
@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 = 14
+ @inferred_check_answers_value = [
+ {
+ "condition" => { "uprn_known" => 0 },
+ "value" => "Not known",
+ },
+ ]
end
def unanswered_error_message
@@ -15,6 +20,8 @@ class Form::Sales::Questions::Uprn < ::Form::Question
end
def get_extra_check_answer_value(log)
+ return unless log.uprn_known == 1
+
value = [
log.address_line1,
log.address_line2,
@@ -28,8 +35,4 @@ class Form::Sales::Questions::Uprn < ::Form::Question
"\n\n#{value.join("\n")}"
end
-
- def hidden_in_check_answers?(log, _current_user = nil)
- log.uprn_known != 1
- end
end
diff --git a/app/models/form/sales/questions/uprn_known.rb b/app/models/form/sales/questions/uprn_known.rb
index b07b0b7d7..22438e662 100644
--- a/app/models/form/sales/questions/uprn_known.rb
+++ b/app/models/form/sales/questions/uprn_known.rb
@@ -8,6 +8,14 @@ class Form::Sales::Questions::UprnKnown < ::Form::Question
@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.
You can continue without the UPRN, but it means we will need you to enter the address of the property."
+ @conditional_for = { "uprn" => [1] }
+ @inferred_check_answers_value = [
+ {
+ "condition" => { "uprn_known" => 0 },
+ "value" => "Not known",
+ },
+ ]
+ @hidden_in_check_answers = true
end
ANSWER_OPTIONS = {
diff --git a/app/models/form/sales/subsections/property_information.rb b/app/models/form/sales/subsections/property_information.rb
index 95d8485c8..74a064dca 100644
--- a/app/models/form/sales/subsections/property_information.rb
+++ b/app/models/form/sales/subsections/property_information.rb
@@ -24,7 +24,6 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection
def uprn_questions
if form.start_date.year >= 2023
[
- Form::Sales::Pages::UprnKnown.new(nil, nil, self),
Form::Sales::Pages::Uprn.new(nil, nil, self),
Form::Sales::Pages::UprnConfirmation.new(nil, nil, self),
Form::Sales::Pages::Address.new(nil, nil, self),
diff --git a/app/models/log.rb b/app/models/log.rb
index 13f7a5b5b..33d3c4547 100644
--- a/app/models/log.rb
+++ b/app/models/log.rb
@@ -52,6 +52,7 @@ class Log < ApplicationRecord
presenter = UprnDataPresenter.new(service.result)
+ self.uprn_known = 1
self.uprn_confirmed = nil
self.address_line1 = presenter.address_line1
self.address_line2 = presenter.address_line2
diff --git a/spec/models/form/lettings/pages/uprn_known_spec.rb b/spec/models/form/lettings/pages/uprn_known_spec.rb
deleted file mode 100644
index 27b893a5c..000000000
--- a/spec/models/form/lettings/pages/uprn_known_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-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
diff --git a/spec/models/form/lettings/pages/uprn_spec.rb b/spec/models/form/lettings/pages/uprn_spec.rb
index 7b480b6b2..d7ddec73f 100644
--- a/spec/models/form/lettings/pages/uprn_spec.rb
+++ b/spec/models/form/lettings/pages/uprn_spec.rb
@@ -12,7 +12,7 @@ RSpec.describe Form::Lettings::Pages::Uprn, type: :model do
end
it "has correct questions" do
- expect(page.questions.map(&:id)).to eq(%w[uprn])
+ expect(page.questions.map(&:id)).to eq(%w[uprn_known uprn])
end
it "has the correct id" do
@@ -36,14 +36,6 @@ RSpec.describe Form::Lettings::Pages::Uprn, type: :model do
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) }
diff --git a/spec/models/form/lettings/questions/uprn_known_spec.rb b/spec/models/form/lettings/questions/uprn_known_spec.rb
index 07eb72f8d..a79185462 100644
--- a/spec/models/form/lettings/questions/uprn_known_spec.rb
+++ b/spec/models/form/lettings/questions/uprn_known_spec.rb
@@ -39,7 +39,7 @@ RSpec.describe Form::Lettings::Questions::UprnKnown, type: :model do
end
it "has correct conditional for" do
- expect(question.conditional_for).to be_nil
+ expect(question.conditional_for).to eq({ "uprn" => [1] })
end
it "has the correct unanswered_error_message" do
@@ -54,6 +54,6 @@ RSpec.describe Form::Lettings::Questions::UprnKnown, type: :model do
end
it "has the correct hidden_in_check_answers" do
- expect(question.hidden_in_check_answers).to be_nil
+ expect(question.hidden_in_check_answers).to eq(true)
end
end
diff --git a/spec/models/form/lettings/questions/uprn_spec.rb b/spec/models/form/lettings/questions/uprn_spec.rb
index 8f6ba047a..5e0be655b 100644
--- a/spec/models/form/lettings/questions/uprn_spec.rb
+++ b/spec/models/form/lettings/questions/uprn_spec.rb
@@ -36,7 +36,7 @@ RSpec.describe Form::Lettings::Questions::Uprn, type: :model do
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.")
+ expect(question.hint_text).to be_nil
end
it "has the correct unanswered_error_message" do
@@ -61,32 +61,44 @@ RSpec.describe Form::Lettings::Questions::Uprn, type: :model do
county: "Test County",
postcode_full: "AA1 1AA",
la: "E09000003",
+ uprn_known:,
)
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",
- )
+ context "when uprn known nil" do
+ let(:uprn_known) { nil }
+
+ it "returns formatted value" do
+ expect(question.get_extra_check_answer_value(log)).to be_nil
+ end
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) }
+ context "when uprn known" do
+ let(:uprn_known) { 1 }
- it "returns false" do
- expect(question.hidden_in_check_answers?(log)).to eq(false)
+ 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
- context "when uprn_known != 1" do
- let(:log) { create(:lettings_log, uprn_known: 0) }
+ context "when uprn not known" do
+ let(:uprn_known) { 0 }
- it "returns false" do
- expect(question.hidden_in_check_answers?(log)).to eq(true)
+ it "returns formatted value" do
+ expect(question.get_extra_check_answer_value(log)).to be_nil
+ end
end
end
end
+
+ it "has the correct inferred_check_answers_value" do
+ expect(question.inferred_check_answers_value).to eq([{
+ "condition" => {
+ "uprn_known" => 0,
+ },
+ "value" => "Not known",
+ }])
+ end
end
diff --git a/spec/models/form/lettings/subsections/property_information_spec.rb b/spec/models/form/lettings/subsections/property_information_spec.rb
index c1fd9f720..0e0bc7397 100644
--- a/spec/models/form/lettings/subsections/property_information_spec.rb
+++ b/spec/models/form/lettings/subsections/property_information_spec.rb
@@ -45,7 +45,6 @@ RSpec.describe Form::Lettings::Subsections::PropertyInformation, type: :model do
it "has correct pages" do
expect(property_information.pages.map(&:id)).to eq(
%w[
- uprn_known
uprn
uprn_confirmation
address
diff --git a/spec/models/form/sales/pages/uprn_known_spec.rb b/spec/models/form/sales/pages/uprn_known_spec.rb
deleted file mode 100644
index 9c18cfa21..000000000
--- a/spec/models/form/sales/pages/uprn_known_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require "rails_helper"
-
-RSpec.describe Form::Sales::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
-end
diff --git a/spec/models/form/sales/pages/uprn_spec.rb b/spec/models/form/sales/pages/uprn_spec.rb
index 5573caf5a..a0cd5b7bc 100644
--- a/spec/models/form/sales/pages/uprn_spec.rb
+++ b/spec/models/form/sales/pages/uprn_spec.rb
@@ -12,7 +12,7 @@ RSpec.describe Form::Sales::Pages::Uprn, type: :model do
end
it "has correct questions" do
- expect(page.questions.map(&:id)).to eq(%w[uprn])
+ expect(page.questions.map(&:id)).to eq(%w[uprn_known uprn])
end
it "has the correct id" do
diff --git a/spec/models/form/sales/questions/uprn_known_spec.rb b/spec/models/form/sales/questions/uprn_known_spec.rb
index 457471568..4016b6e8d 100644
--- a/spec/models/form/sales/questions/uprn_known_spec.rb
+++ b/spec/models/form/sales/questions/uprn_known_spec.rb
@@ -39,7 +39,7 @@ RSpec.describe Form::Sales::Questions::UprnKnown, type: :model do
end
it "has correct conditional for" do
- expect(question.conditional_for).to be_nil
+ expect(question.conditional_for).to eq({ "uprn" => [1] })
end
it "has the correct unanswered_error_message" do
@@ -54,6 +54,6 @@ RSpec.describe Form::Sales::Questions::UprnKnown, type: :model do
end
it "has the correct hidden_in_check_answers" do
- expect(question.hidden_in_check_answers).to be_nil
+ expect(question.hidden_in_check_answers).to eq(true)
end
end
diff --git a/spec/models/form/sales/questions/uprn_spec.rb b/spec/models/form/sales/questions/uprn_spec.rb
index f8fd75942..46e635868 100644
--- a/spec/models/form/sales/questions/uprn_spec.rb
+++ b/spec/models/form/sales/questions/uprn_spec.rb
@@ -36,7 +36,7 @@ RSpec.describe Form::Sales::Questions::Uprn, type: :model do
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.")
+ expect(question.hint_text).to be_nil
end
it "has the correct unanswered_error_message" do
@@ -61,33 +61,44 @@ RSpec.describe Form::Sales::Questions::Uprn, type: :model do
county: "Test County",
postcode_full: "AA1 1AA",
la: "E09000003",
+ uprn_known:,
)
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",
- )
+ context "when uprn known nil" do
+ let(:uprn_known) { nil }
+
+ it "returns formatted value" do
+ expect(question.get_extra_check_answer_value(log)).to be_nil
+ end
end
- end
- end
- describe "has the correct hidden_in_check_answers" do
- context "when uprn_known == 1" do
- let(:log) { create(:sales_log) }
+ context "when uprn known" do
+ let(:uprn_known) { 1 }
- it "returns false" do
- log.uprn_known = 1
- expect(question.hidden_in_check_answers?(log)).to eq(false)
+ 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
- context "when uprn_known != 1" do
- let(:log) { create(:sales_log, uprn_known: 0) }
+ context "when uprn not known" do
+ let(:uprn_known) { 0 }
- it "returns false" do
- expect(question.hidden_in_check_answers?(log)).to eq(true)
+ it "returns formatted value" do
+ expect(question.get_extra_check_answer_value(log)).to be_nil
+ end
end
end
end
+
+ it "has the correct inferred_check_answers_value" do
+ expect(question.inferred_check_answers_value).to eq([{
+ "condition" => {
+ "uprn_known" => 0,
+ },
+ "value" => "Not known",
+ }])
+ end
end
diff --git a/spec/models/form/sales/subsections/property_information_spec.rb b/spec/models/form/sales/subsections/property_information_spec.rb
index 7a0c57448..559db5ea6 100644
--- a/spec/models/form/sales/subsections/property_information_spec.rb
+++ b/spec/models/form/sales/subsections/property_information_spec.rb
@@ -41,7 +41,6 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do
it "has correct pages" do
expect(property_information.pages.map(&:id)).to eq(
%w[
- uprn_known
uprn
uprn_confirmation
address
diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb
index b33d2fe0f..03b1aae32 100644
--- a/spec/models/lettings_log_spec.rb
+++ b/spec/models/lettings_log_spec.rb
@@ -3140,6 +3140,7 @@ RSpec.describe LettingsLog do
.and change(lettings_log, :postcode_full).from(nil).to("POSTCODE")
.and change(lettings_log, :uprn_confirmed).from(1).to(nil)
.and change(lettings_log, :county).from("county").to(nil)
+ .and change(lettings_log, :uprn_known).from(nil).to(1)
end
end
diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb
index dae08310e..1fc2cf73e 100644
--- a/spec/models/sales_log_spec.rb
+++ b/spec/models/sales_log_spec.rb
@@ -559,6 +559,7 @@ RSpec.describe SalesLog, type: :model do
.and change(sales_log, :postcode_full).from(nil).to("POSTCODE")
.and change(sales_log, :uprn_confirmed).from(1).to(nil)
.and change(sales_log, :county).from("county").to(nil)
+ .and change(sales_log, :uprn_known).from(nil).to(1)
end
end