From c43e73025419b9c230adf1a4cf824c13e00e1514 Mon Sep 17 00:00:00 2001
From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com>
Date: Mon, 28 Mar 2022 09:58:48 +0100
Subject: [PATCH] Cldc 657 full postcodes (#421)
* Rename full postcode columns
* Normalise the postcodes
* Fix test
---
app/admin/case_logs.rb | 2 +-
app/admin/dashboard.rb | 2 +-
app/models/case_log.rb | 20 ++--
app/models/form.rb | 2 +-
.../local_authority_validations.rb | 4 +-
.../validations/property_validations.rb | 8 +-
config/forms/2021_2022.json | 8 +-
.../20220324152359_rename_postcode_columns.rb | 6 ++
db/schema.rb | 4 +-
docs/api/DLUHC-CORE-Data.v1.json | 12 +--
spec/factories/case_log.rb | 8 +-
spec/features/form/check_answers_page_spec.rb | 4 +-
.../form/conditional_questions_spec.rb | 4 +-
spec/features/form/page_routing_spec.rb | 4 +-
spec/features/form/saving_data_spec.rb | 2 +-
spec/fixtures/complete_case_log.json | 4 +-
spec/fixtures/exports/case_logs.xml | 4 +-
spec/fixtures/forms/2021_2022.json | 6 +-
spec/models/case_log_spec.rb | 91 ++++++++++++++-----
spec/models/form/question_spec.rb | 4 +-
spec/models/form_spec.rb | 4 +-
.../local_authority_validations_spec.rb | 16 ++--
.../validations/property_validations_spec.rb | 6 +-
spec/requests/case_logs_controller_spec.rb | 16 ++--
24 files changed, 147 insertions(+), 94 deletions(-)
create mode 100644 db/migrate/20220324152359_rename_postcode_columns.rb
diff --git a/app/admin/case_logs.rb b/app/admin/case_logs.rb
index f958ba670..389830a16 100644
--- a/app/admin/case_logs.rb
+++ b/app/admin/case_logs.rb
@@ -12,7 +12,7 @@ ActiveAdmin.register CaseLog do
column :updated_at
column :status
column :tenant_code
- column :property_postcode
+ column :postcode_full
column :owning_organisation
column :managing_organisation
actions
diff --git a/app/admin/dashboard.rb b/app/admin/dashboard.rb
index 9db09a42e..579f6f487 100644
--- a/app/admin/dashboard.rb
+++ b/app/admin/dashboard.rb
@@ -11,7 +11,7 @@ ActiveAdmin.register_page "Dashboard" do
column :updated_at
column :status
column :tenant_code
- column :property_postcode
+ column :postcode_full
end
end
end
diff --git a/app/models/case_log.rb b/app/models/case_log.rb
index 2bc3335d2..6e542799b 100644
--- a/app/models/case_log.rb
+++ b/app/models/case_log.rb
@@ -22,8 +22,8 @@ class CaseLog < ApplicationRecord
has_paper_trail
validates_with CaseLogValidator
- before_validation :process_postcode_changes!, if: :property_postcode_changed?
- before_validation :process_previous_postcode_changes!, if: :previous_postcode_changed?
+ before_validation :process_postcode_changes!, if: :postcode_full_changed?
+ before_validation :process_previous_postcode_changes!, if: :ppostcode_full_changed?
before_validation :reset_invalidated_dependent_fields!
before_validation :reset_location_fields!, unless: :postcode_known?
before_validation :reset_previous_location_fields!, unless: :previous_postcode_known?
@@ -332,9 +332,9 @@ private
end
def set_derived_fields!
- if previous_postcode.present?
- self.ppostc1 = UKPostcode.parse(previous_postcode).outcode
- self.ppostc2 = UKPostcode.parse(previous_postcode).incode
+ if ppostcode_full.present?
+ self.ppostc1 = UKPostcode.parse(ppostcode_full).outcode
+ self.ppostc2 = UKPostcode.parse(ppostcode_full).incode
end
if mrcdate.present?
self.mrcday = mrcdate.day
@@ -400,11 +400,13 @@ private
end
def process_postcode_changes!
- process_postcode(property_postcode, "postcode_known", "is_la_inferred", "la", "postcode", "postcod2")
+ self.postcode_full = postcode_full.present? ? postcode_full.upcase.gsub(/\s+/, "") : postcode_full
+ process_postcode(postcode_full, "postcode_known", "is_la_inferred", "la", "postcode", "postcod2")
end
def process_previous_postcode_changes!
- process_postcode(previous_postcode, "previous_postcode_known", "is_previous_la_inferred", "prevloc", "ppostc1", "ppostc2")
+ self.ppostcode_full = ppostcode_full.present? ? ppostcode_full.upcase.gsub(/\s+/, "") : ppostcode_full
+ process_postcode(ppostcode_full, "previous_postcode_known", "is_previous_la_inferred", "prevloc", "ppostc1", "ppostc2")
end
def process_postcode(postcode, postcode_known_key, la_inferred_key, la_key, outcode_key, incode_key)
@@ -419,11 +421,11 @@ private
end
def reset_location_fields!
- reset_location(is_la_inferred, "la", "is_la_inferred", "property_postcode", "postcode", "postcod2", la_known)
+ reset_location(is_la_inferred, "la", "is_la_inferred", "postcode_full", "postcode", "postcod2", la_known)
end
def reset_previous_location_fields!
- reset_location(is_previous_la_inferred, "prevloc", "is_previous_la_inferred", "previous_postcode", "ppostc1", "ppostc2", previous_la_known)
+ reset_location(is_previous_la_inferred, "prevloc", "is_previous_la_inferred", "ppostcode_full", "ppostc1", "ppostc2", previous_la_known)
end
def reset_location(is_inferred, la_key, is_inferred_key, postcode_key, incode_key, outcode_key, is_la_known)
diff --git a/app/models/form.rb b/app/models/form.rb
index e8e553fac..b68eef18c 100644
--- a/app/models/form.rb
+++ b/app/models/form.rb
@@ -117,7 +117,7 @@ class Form
def invalidated_page_questions(case_log)
# we're already treating address fields as a special case and reset their values upon saving a case_log
- address_questions = %w[postcode_known la previous_postcode_known prevloc property_postcode previous_postcode]
+ address_questions = %w[postcode_known la previous_postcode_known prevloc postcode_full ppostcode_full]
invalidated_pages(case_log).flat_map(&:questions).reject { |q| address_questions.include?(q.id) } || []
end
diff --git a/app/models/validations/local_authority_validations.rb b/app/models/validations/local_authority_validations.rb
index 2264145ce..a7b3ed30d 100644
--- a/app/models/validations/local_authority_validations.rb
+++ b/app/models/validations/local_authority_validations.rb
@@ -2,10 +2,10 @@ module Validations::LocalAuthorityValidations
POSTCODE_REGEXP = Validations::PropertyValidations::POSTCODE_REGEXP
def validate_previous_accommodation_postcode(record)
- postcode = record.previous_postcode
+ postcode = record.ppostcode_full
if record.previous_postcode_known? && (postcode.blank? || !postcode.match(POSTCODE_REGEXP))
error_message = I18n.t("validations.postcode")
- record.errors.add :previous_postcode, error_message
+ record.errors.add :ppostcode_full, error_message
end
end
end
diff --git a/app/models/validations/property_validations.rb b/app/models/validations/property_validations.rb
index 8a72bdabb..ab97a20d4 100644
--- a/app/models/validations/property_validations.rb
+++ b/app/models/validations/property_validations.rb
@@ -57,8 +57,8 @@ module Validations::PropertyValidations
def validate_la(record)
if record.la.present? && !LONDON_BOROUGHS.include?(record.la) && record.is_london_rent?
record.errors.add :la, I18n.t("validations.property.la.london_rent")
- if record.postcode_known? && record.property_postcode.present?
- record.errors.add :property_postcode, I18n.t("validations.property.la.london_rent_postcode")
+ if record.postcode_known? && record.postcode_full.present?
+ record.errors.add :postcode_full, I18n.t("validations.property.la.london_rent_postcode")
end
end
@@ -94,10 +94,10 @@ module Validations::PropertyValidations
end
def validate_property_postcode(record)
- postcode = record.property_postcode
+ postcode = record.postcode_full
if record.postcode_known? && (postcode.blank? || !postcode.match(POSTCODE_REGEXP))
error_message = I18n.t("validations.postcode")
- record.errors.add :property_postcode, error_message
+ record.errors.add :postcode_full, error_message
end
end
diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json
index 3f3fdf31f..2903be295 100644
--- a/config/forms/2021_2022.json
+++ b/config/forms/2021_2022.json
@@ -196,13 +196,13 @@
}
},
"conditional_for": {
- "property_postcode": [
+ "postcode_full": [
1
]
},
"hidden_in_check_answers": true
},
- "property_postcode": {
+ "postcode_full": {
"check_answer_label": "Postcode",
"header": "What is the property’s postcode?",
"hint_text": "",
@@ -3697,13 +3697,13 @@
}
},
"conditional_for": {
- "previous_postcode": [
+ "ppostcode_full": [
1
]
},
"hidden_in_check_answers": true
},
- "previous_postcode": {
+ "ppostcode_full": {
"check_answer_label": "Postcode of household’s last settled accommodation",
"header": "Postcode for the previous accommodation",
"hint_text": "",
diff --git a/db/migrate/20220324152359_rename_postcode_columns.rb b/db/migrate/20220324152359_rename_postcode_columns.rb
new file mode 100644
index 000000000..e984daf37
--- /dev/null
+++ b/db/migrate/20220324152359_rename_postcode_columns.rb
@@ -0,0 +1,6 @@
+class RenamePostcodeColumns < ActiveRecord::Migration[7.0]
+ def change
+ rename_column :case_logs, :previous_postcode, :ppostcode_full
+ rename_column :case_logs, :property_postcode, :postcode_full
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 11d585b51..1468b9dc9 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -87,7 +87,7 @@ ActiveRecord::Schema[7.0].define(version: 202202071123100) do
t.integer "tenancylength"
t.integer "tenancy"
t.integer "landlord"
- t.string "previous_postcode"
+ t.string "ppostcode_full"
t.integer "rsnvac"
t.integer "unittype_gn"
t.integer "beds"
@@ -99,7 +99,7 @@ ActiveRecord::Schema[7.0].define(version: 202202071123100) do
t.integer "period"
t.integer "layear"
t.integer "lawaitlist"
- t.string "property_postcode"
+ t.string "postcode_full"
t.integer "reasonpref"
t.integer "cbl"
t.integer "chr"
diff --git a/docs/api/DLUHC-CORE-Data.v1.json b/docs/api/DLUHC-CORE-Data.v1.json
index 6750069f6..742c2a571 100644
--- a/docs/api/DLUHC-CORE-Data.v1.json
+++ b/docs/api/DLUHC-CORE-Data.v1.json
@@ -324,7 +324,7 @@
"tenancy": 3,
"landlord": "This landlord",
"la": "Barnet",
- "property_postcode": "NW1 5TY",
+ "postcode_full": "NW1 5TY",
"property_relet": 0,
"rsnvac": 0,
"property_reference": "P9876",
@@ -354,7 +354,7 @@
"layear": 2,
"lawaitlist": 1,
"prevloc": "E07000105",
- "previous_postcode": "SE2 6RT",
+ "ppostcode_full": "SE2 6RT",
"reasonpref": 1,
"cbl": 1,
"chr": 1,
@@ -625,7 +625,7 @@
"type": "string",
"minLength": 1
},
- "previous_postcode": {
+ "ppostcode_full": {
"type": "string",
"minLength": 1
},
@@ -710,7 +710,7 @@
"type": "string",
"minLength": 1
},
- "property_postcode": {
+ "postcode_full": {
"type": "string",
"minLength": 1
},
@@ -866,7 +866,7 @@
"lettype",
"landlord",
"la",
- "previous_postcode",
+ "ppostcode_full",
"property_relet",
"rsnvac",
"property_reference",
@@ -892,7 +892,7 @@
"layear",
"lawaitlist",
"prevloc",
- "property_postcode",
+ "postcode_full",
"reasonpref",
"reasonable_preference_reason",
"cbl",
diff --git a/spec/factories/case_log.rb b/spec/factories/case_log.rb
index 99a7e72fc..60cdc72bd 100644
--- a/spec/factories/case_log.rb
+++ b/spec/factories/case_log.rb
@@ -12,8 +12,8 @@ FactoryBot.define do
trait :in_progress do
status { 1 }
tenant_code { "TH356" }
- property_postcode { "PO5 3TE" }
- previous_postcode { "SW2 6HI" }
+ postcode_full { "PO5 3TE" }
+ ppostcode_full { "SW2 6HI" }
age1 { 17 }
end
trait :soft_validations_triggered do
@@ -58,7 +58,7 @@ FactoryBot.define do
tenancylength { 5 }
tenancy { 3 }
landlord { 1 }
- previous_postcode { "SE2 6RT" }
+ ppostcode_full { "SE2 6RT" }
rsnvac { 7 }
unittype_gn { 2 }
beds { 3 }
@@ -79,7 +79,7 @@ FactoryBot.define do
tcharge { 325 }
layear { 2 }
lawaitlist { 1 }
- property_postcode { "NW1 5TY" }
+ postcode_full { "NW1 5TY" }
reasonpref { 1 }
cbl { 1 }
chr { 1 }
diff --git a/spec/features/form/check_answers_page_spec.rb b/spec/features/form/check_answers_page_spec.rb
index ae093cd24..6ef6d7d3b 100644
--- a/spec/features/form/check_answers_page_spec.rb
+++ b/spec/features/form/check_answers_page_spec.rb
@@ -184,9 +184,9 @@ RSpec.describe "Form Check Answers Page" do
age1: nil,
layear: 2,
lawaitlist: 1,
- property_postcode: "NW1 5TY",
+ postcode_full: "NW1 5TY",
reason: 4,
- previous_postcode: "SE2 6RT",
+ ppostcode_full: "SE2 6RT",
mrcdate: Time.zone.parse("03/11/2019"),
)
end
diff --git a/spec/features/form/conditional_questions_spec.rb b/spec/features/form/conditional_questions_spec.rb
index 051bf5862..db558c93a 100644
--- a/spec/features/form/conditional_questions_spec.rb
+++ b/spec/features/form/conditional_questions_spec.rb
@@ -38,9 +38,9 @@ RSpec.describe "Form Conditional Questions" do
context "when a conditional question has a saved answer", js: true do
it "is displayed correctly" do
- case_log.update!(postcode_known: 1, property_postcode: "NW1 6RT")
+ case_log.update!(postcode_known: 1, postcode_full: "NW1 6RT")
visit("/logs/#{id}/property-postcode")
- expect(page).to have_field("case-log-property-postcode-field", with: "NW1 6RT")
+ expect(page).to have_field("case-log-postcode-full-field", with: "NW16RT")
end
end
end
diff --git a/spec/features/form/page_routing_spec.rb b/spec/features/form/page_routing_spec.rb
index 28358e949..d4f50f118 100644
--- a/spec/features/form/page_routing_spec.rb
+++ b/spec/features/form/page_routing_spec.rb
@@ -50,7 +50,7 @@ RSpec.describe "Form Page Routing" do
context "when the answers are inferred", js: true do
it "shows question if the answer could not be inferred" do
visit("/logs/#{id}/property-postcode")
- fill_in("case-log-property-postcode-field", with: "PO5 3TE")
+ fill_in("case-log-postcode-full-field", with: "PO5 3TE")
click_button("Save and continue")
expect(page).to have_current_path("/logs/#{id}/do-you-know-the-local-authority")
end
@@ -66,7 +66,7 @@ RSpec.describe "Form Page Routing" do
.to_return(status: 200, body: "{\"status\":200,\"result\":{\"admin_district\":\"Manchester\", \"codes\":{\"admin_district\": \"E08000003\"}}}", headers: {})
visit("/logs/#{id}/property-postcode")
- fill_in("case-log-property-postcode-field", with: "P0 5ST")
+ fill_in("case-log-postcode-full-field", with: "P0 5ST")
click_button("Save and continue")
expect(page).to have_current_path("/logs/#{id}/property-wheelchair-accessible")
end
diff --git a/spec/features/form/saving_data_spec.rb b/spec/features/form/saving_data_spec.rb
index 9bea5515d..d9fa2feba 100644
--- a/spec/features/form/saving_data_spec.rb
+++ b/spec/features/form/saving_data_spec.rb
@@ -73,7 +73,7 @@ RSpec.describe "Form Saving Data" do
it "displays number answers in inputs if they are already saved" do
visit("/logs/#{id}/property-postcode")
- expect(page).to have_field("case-log-property-postcode-field", with: "PO5 3TE")
+ expect(page).to have_field("case-log-postcode-full-field", with: "PO53TE")
end
it "displays text answers in inputs if they are already saved" do
diff --git a/spec/fixtures/complete_case_log.json b/spec/fixtures/complete_case_log.json
index e2bbf0245..dcfa683d0 100644
--- a/spec/fixtures/complete_case_log.json
+++ b/spec/fixtures/complete_case_log.json
@@ -55,7 +55,7 @@
"tenancy": 3,
"landlord": "This landlord",
"la": "Barnet",
- "property_postcode": "NW1 5TY",
+ "postcode_full": "NW1 5TY",
"property_relet": 0,
"rsnvac": 0,
"property_reference": "P9876",
@@ -88,7 +88,7 @@
"layear": 2,
"lawaitlist": 1,
"prevloc": "E07000105",
- "previous_postcode": "SE2 6RT",
+ "ppostcode_full": "SE2 6RT",
"reasonpref": 1,
"cbl": 1,
"chr": 1,
diff --git a/spec/fixtures/exports/case_logs.xml b/spec/fixtures/exports/case_logs.xml
index 6f2148f0b..e64b91d20 100644
--- a/spec/fixtures/exports/case_logs.xml
+++ b/spec/fixtures/exports/case_logs.xml
@@ -45,7 +45,7 @@
5
3
1
- SE2 6RT
+ SE26RT
7
2
3
@@ -57,7 +57,7 @@
2
2
1
- NW1 5TY
+ NW15TY
1
1
1
diff --git a/spec/fixtures/forms/2021_2022.json b/spec/fixtures/forms/2021_2022.json
index 0eea7737a..8bd6c662e 100644
--- a/spec/fixtures/forms/2021_2022.json
+++ b/spec/fixtures/forms/2021_2022.json
@@ -379,13 +379,13 @@
}
},
"conditional_for": {
- "property_postcode": [
+ "postcode_full": [
1
]
},
"hidden_in_check_answers": true
},
- "property_postcode": {
+ "postcode_full": {
"check_answer_label": "Postcode",
"header": "",
"hint_text": "",
@@ -888,7 +888,7 @@
"width": 5,
"conditional_for": { "fake_key": "fake_condition" }
},
- "previous_postcode": {
+ "ppostcode_full": {
"check_answer_label": "Postcode of previous accommodation if the household has moved from settled accommodation",
"header": "Postcode for the previous accommodation",
"hint_text": "If the household has moved from settled accommodation immediately prior to being re-housed",
diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb
index ee8215211..0c751be4e 100644
--- a/spec/models/case_log_spec.rb
+++ b/spec/models/case_log_spec.rb
@@ -196,8 +196,8 @@ RSpec.describe CaseLog do
described_class.create({
managing_organisation: organisation,
owning_organisation: organisation,
- property_postcode: "M1 1AE",
- previous_postcode: "M2 2AE",
+ postcode_full: "M1 1AE",
+ ppostcode_full: "M2 2AE",
startdate: Time.gm(2021, 10, 10),
mrcdate: Time.gm(2021, 5, 4),
property_void_date: Time.gm(2021, 3, 3),
@@ -1134,6 +1134,15 @@ RSpec.describe CaseLog do
end
end
+ def check_postcode_fields(postcode_field, outcode_field, incode_field)
+ record_from_db = ActiveRecord::Base.connection.execute("select #{postcode_field}, #{outcode_field}, #{incode_field} from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(address_case_log[postcode_field]).to eq("M11AE")
+ expect(record_from_db[postcode_field]).to eq("M11AE")
+ expect(address_case_log[outcode_field]).to eq("M1")
+ expect(record_from_db[outcode_field]).to eq("M1")
+ expect(address_case_log[incode_field]).to eq("1AE")
+ expect(record_from_db[incode_field]).to eq("1AE")
+ end
context "when saving addresses" do
before do
stub_request(:get, /api.postcodes.io/)
@@ -1145,10 +1154,28 @@ RSpec.describe CaseLog do
managing_organisation: organisation,
owning_organisation: organisation,
postcode_known: 1,
- property_postcode: "M1 1AE",
+ postcode_full: "M1 1AE",
})
end
+ def check_property_postcode_fields
+ check_postcode_fields("postcode_full", "postcode", "postcod2")
+ end
+
+ it "correctly formats previous postcode" do
+ address_case_log.update!(postcode_full: "M1 1AE")
+ check_property_postcode_fields
+
+ address_case_log.update!(postcode_full: "m1 1ae")
+ check_property_postcode_fields
+
+ address_case_log.update!(postcode_full: "m11Ae")
+ check_property_postcode_fields
+
+ address_case_log.update!(postcode_full: "m11ae")
+ check_property_postcode_fields
+ end
+
it "correctly infers la" do
record_from_db = ActiveRecord::Base.connection.execute("select la from case_logs where id=#{address_case_log.id}").to_a[0]
expect(address_case_log.la).to eq("E08000003")
@@ -1156,12 +1183,12 @@ RSpec.describe CaseLog do
end
it "errors if the property postcode is emptied" do
- expect { address_case_log.update!({ property_postcode: "" }) }
+ expect { address_case_log.update!({ postcode_full: "" }) }
.to raise_error(ActiveRecord::RecordInvalid, /#{I18n.t("validations.postcode")}/)
end
it "errors if the property postcode is not valid" do
- expect { address_case_log.update!({ property_postcode: "invalid_postcode" }) }
+ expect { address_case_log.update!({ postcode_full: "invalid_postcode" }) }
.to raise_error(ActiveRecord::RecordInvalid, /#{I18n.t("validations.postcode")}/)
end
@@ -1172,15 +1199,15 @@ RSpec.describe CaseLog do
it "logs a warning" do
expect(Rails.logger).to receive(:warn).with("Postcodes.io lookup timed out")
- address_case_log.update!({ postcode_known: 1, property_postcode: "M1 1AD" })
+ address_case_log.update!({ postcode_known: 1, postcode_full: "M1 1AD" })
end
end
it "correctly resets all fields if property postcode not known" do
address_case_log.update!({ postcode_known: 0 })
- record_from_db = ActiveRecord::Base.connection.execute("select la, property_postcode from case_logs where id=#{address_case_log.id}").to_a[0]
- expect(record_from_db["property_postcode"]).to eq(nil)
+ record_from_db = ActiveRecord::Base.connection.execute("select la, postcode_full from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(record_from_db["postcode_full"]).to eq(nil)
expect(address_case_log.la).to eq(nil)
expect(record_from_db["la"]).to eq(nil)
end
@@ -1189,15 +1216,15 @@ RSpec.describe CaseLog do
address_case_log.update!({ postcode_known: 0 })
address_case_log.update!({ la_known: 1, la: "E09000033" })
- record_from_db = ActiveRecord::Base.connection.execute("select la, property_postcode from case_logs where id=#{address_case_log.id}").to_a[0]
- expect(record_from_db["property_postcode"]).to eq(nil)
+ record_from_db = ActiveRecord::Base.connection.execute("select la, postcode_full from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(record_from_db["postcode_full"]).to eq(nil)
expect(address_case_log.la).to eq("E09000033")
expect(record_from_db["la"]).to eq("E09000033")
- address_case_log.update!({ postcode_known: 1, property_postcode: "M1 1AD" })
+ address_case_log.update!({ postcode_known: 1, postcode_full: "M1 1AD" })
- record_from_db = ActiveRecord::Base.connection.execute("select la, property_postcode from case_logs where id=#{address_case_log.id}").to_a[0]
- expect(record_from_db["property_postcode"]).to eq("M1 1AD")
+ record_from_db = ActiveRecord::Base.connection.execute("select la, postcode_full from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(record_from_db["postcode_full"]).to eq("M11AD")
expect(address_case_log.la).to eq("E08000003")
expect(record_from_db["la"]).to eq("E08000003")
end
@@ -1214,10 +1241,28 @@ RSpec.describe CaseLog do
managing_organisation: organisation,
owning_organisation: organisation,
previous_postcode_known: 1,
- previous_postcode: "M1 1AE",
+ ppostcode_full: "M1 1AE",
})
end
+ def check_previous_postcode_fields
+ check_postcode_fields("ppostcode_full", "ppostc1", "ppostc2")
+ end
+
+ it "correctly formats previous postcode" do
+ address_case_log.update!(ppostcode_full: "M1 1AE")
+ check_previous_postcode_fields
+
+ address_case_log.update!(ppostcode_full: "m1 1ae")
+ check_previous_postcode_fields
+
+ address_case_log.update!(ppostcode_full: "m11Ae")
+ check_previous_postcode_fields
+
+ address_case_log.update!(ppostcode_full: "m11ae")
+ check_previous_postcode_fields
+ end
+
it "correctly infers prevloc" do
record_from_db = ActiveRecord::Base.connection.execute("select prevloc from case_logs where id=#{address_case_log.id}").to_a[0]
expect(address_case_log.prevloc).to eq("E08000003")
@@ -1225,20 +1270,20 @@ RSpec.describe CaseLog do
end
it "errors if the previous postcode is emptied" do
- expect { address_case_log.update!({ previous_postcode: "" }) }
+ expect { address_case_log.update!({ ppostcode_full: "" }) }
.to raise_error(ActiveRecord::RecordInvalid, /#{I18n.t("validations.postcode")}/)
end
it "errors if the previous postcode is not valid" do
- expect { address_case_log.update!({ previous_postcode: "invalid_postcode" }) }
+ expect { address_case_log.update!({ ppostcode_full: "invalid_postcode" }) }
.to raise_error(ActiveRecord::RecordInvalid, /#{I18n.t("validations.postcode")}/)
end
it "correctly resets all fields if previous postcode not known" do
address_case_log.update!({ previous_postcode_known: 0 })
- record_from_db = ActiveRecord::Base.connection.execute("select prevloc, previous_postcode from case_logs where id=#{address_case_log.id}").to_a[0]
- expect(record_from_db["previous_postcode"]).to eq(nil)
+ record_from_db = ActiveRecord::Base.connection.execute("select prevloc, ppostcode_full from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(record_from_db["ppostcode_full"]).to eq(nil)
expect(address_case_log.prevloc).to eq(nil)
expect(record_from_db["prevloc"]).to eq(nil)
end
@@ -1260,15 +1305,15 @@ RSpec.describe CaseLog do
address_case_log.update!({ previous_postcode_known: 0 })
address_case_log.update!({ previous_la_known: 1, prevloc: "E09000033" })
- record_from_db = ActiveRecord::Base.connection.execute("select prevloc, previous_postcode from case_logs where id=#{address_case_log.id}").to_a[0]
- expect(record_from_db["previous_postcode"]).to eq(nil)
+ record_from_db = ActiveRecord::Base.connection.execute("select prevloc, ppostcode_full from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(record_from_db["ppostcode_full"]).to eq(nil)
expect(address_case_log.prevloc).to eq("E09000033")
expect(record_from_db["prevloc"]).to eq("E09000033")
- address_case_log.update!({ previous_postcode_known: 0, previous_postcode: "M1 1AD" })
+ address_case_log.update!({ previous_postcode_known: 0, ppostcode_full: "M1 1AD" })
- record_from_db = ActiveRecord::Base.connection.execute("select prevloc, previous_postcode from case_logs where id=#{address_case_log.id}").to_a[0]
- expect(record_from_db["previous_postcode"]).to eq("M1 1AD")
+ record_from_db = ActiveRecord::Base.connection.execute("select prevloc, ppostcode_full from case_logs where id=#{address_case_log.id}").to_a[0]
+ expect(record_from_db["ppostcode_full"]).to eq("M11AD")
expect(address_case_log.prevloc).to eq("E08000003")
expect(record_from_db["prevloc"]).to eq("E08000003")
end
diff --git a/spec/models/form/question_spec.rb b/spec/models/form/question_spec.rb
index f901398ab..c5aa26e12 100644
--- a/spec/models/form/question_spec.rb
+++ b/spec/models/form/question_spec.rb
@@ -211,7 +211,7 @@ RSpec.describe Form::Question, type: :model do
let(:section_id) { "tenancy_and_property" }
let(:subsection_id) { "property_information" }
let(:page_id) { "property_postcode" }
- let(:case_log) { FactoryBot.build(:case_log, :in_progress, postcode_known: 0, property_postcode: nil) }
+ let(:case_log) { FactoryBot.build(:case_log, :in_progress, postcode_known: 0, postcode_full: nil) }
let(:question_id) { "property_postcode" }
it "displays 'change' in the check answers link text" do
@@ -299,7 +299,7 @@ RSpec.describe Form::Question, type: :model do
let(:section_id) { "tenancy_and_property" }
let(:subsection_id) { "property_information" }
let(:page_id) { "property_postcode" }
- let(:question_id) { "property_postcode" }
+ let(:question_id) { "postcode_full" }
it "returns true" do
case_log["postcode_known"] = 0
diff --git a/spec/models/form_spec.rb b/spec/models/form_spec.rb
index fff2375aa..34c2ab929 100644
--- a/spec/models/form_spec.rb
+++ b/spec/models/form_spec.rb
@@ -79,9 +79,9 @@ RSpec.describe Form, type: :model do
def answer_local_authority(case_log)
case_log.layear = "1 year but under 2 years"
case_log.lawaitlist = "Less than 1 year"
- case_log.property_postcode = "NW1 5TY"
+ case_log.postcode_full = "NW1 5TY"
case_log.reason = "Permanently decanted from another property owned by this landlord"
- case_log.previous_postcode = "SE2 6RT"
+ case_log.ppostcode_full = "SE2 6RT"
case_log.mrcdate = Time.zone.parse("03/11/2019")
end
diff --git a/spec/models/validations/local_authority_validations_spec.rb b/spec/models/validations/local_authority_validations_spec.rb
index 65ad84fdc..6ece1932c 100644
--- a/spec/models/validations/local_authority_validations_spec.rb
+++ b/spec/models/validations/local_authority_validations_spec.rb
@@ -7,32 +7,32 @@ RSpec.describe Validations::LocalAuthorityValidations do
let(:record) { FactoryBot.create(:case_log) }
describe "#validate_previous_accommodation_postcode" do
- it "does not add an error if the record previous_postcode is missing" do
- record.previous_postcode = nil
+ it "does not add an error if the record ppostcode_full is missing" do
+ record.ppostcode_full = nil
local_auth_validator.validate_previous_accommodation_postcode(record)
expect(record.errors).to be_empty
end
- it "does not add an error if the record previous_postcode is valid (uppercase space)" do
+ it "does not add an error if the record ppostcode_full is valid (uppercase space)" do
record.previous_postcode_known = 1
- record.previous_postcode = "M1 1AE"
+ record.ppostcode_full = "M1 1AE"
local_auth_validator.validate_previous_accommodation_postcode(record)
expect(record.errors).to be_empty
end
- it "does not add an error if the record previous_postcode is valid (lowercase no space)" do
+ it "does not add an error if the record ppostcode_full is valid (lowercase no space)" do
record.previous_postcode_known = 1
- record.previous_postcode = "m11ae"
+ record.ppostcode_full = "m11ae"
local_auth_validator.validate_previous_accommodation_postcode(record)
expect(record.errors).to be_empty
end
it "does add an error when the postcode is invalid" do
record.previous_postcode_known = 1
- record.previous_postcode = "invalid"
+ record.ppostcode_full = "invalid"
local_auth_validator.validate_previous_accommodation_postcode(record)
expect(record.errors).not_to be_empty
- expect(record.errors["previous_postcode"]).to include(match I18n.t("validations.postcode"))
+ expect(record.errors["ppostcode_full"]).to include(match I18n.t("validations.postcode"))
end
end
end
diff --git a/spec/models/validations/property_validations_spec.rb b/spec/models/validations/property_validations_spec.rb
index 12d7b7206..5dd339984 100644
--- a/spec/models/validations/property_validations_spec.rb
+++ b/spec/models/validations/property_validations_spec.rb
@@ -156,7 +156,7 @@ RSpec.describe Validations::PropertyValidations do
record.rent_type = 2
property_validator.validate_la(record)
expect(record.errors["la"]).to include(match(expected_error))
- expect(record.errors["property_postcode"]).to be_empty
+ expect(record.errors["postcode_full"]).to be_empty
end
it "expects that the local authority is in London" do
@@ -173,9 +173,9 @@ RSpec.describe Validations::PropertyValidations do
record.la = "E07000105"
record.rent_type = 2
record.postcode_known = 1
- record.property_postcode = "BN18 7TR"
+ record.postcode_full = "BN18 7TR"
property_validator.validate_la(record)
- expect(record.errors["property_postcode"]).to include(match(expected_error))
+ expect(record.errors["postcode_full"]).to include(match(expected_error))
end
end
end
diff --git a/spec/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb
index 4a9859cfc..0c1e3524a 100644
--- a/spec/requests/case_logs_controller_spec.rb
+++ b/spec/requests/case_logs_controller_spec.rb
@@ -29,7 +29,7 @@ RSpec.describe CaseLogsController, type: :request do
let(:age1) { 35 }
let(:offered) { 12 }
let(:period) { 2 }
- let(:property_postcode) { "SE11 6TY" }
+ let(:postcode_full) { "SE116TY" }
let(:in_progress) { "in_progress" }
let(:completed) { "completed" }
@@ -40,7 +40,7 @@ RSpec.describe CaseLogsController, type: :request do
"managing_organisation_id": managing_organisation.id,
"tenant_code": tenant_code,
"age1": age1,
- "property_postcode": property_postcode,
+ "postcode_full": postcode_full,
"offered": offered,
"period": period,
}
@@ -63,7 +63,7 @@ RSpec.describe CaseLogsController, type: :request do
json_response = JSON.parse(response.body)
expect(json_response["tenant_code"]).to eq(tenant_code)
expect(json_response["age1"]).to eq(age1)
- expect(json_response["property_postcode"]).to eq(property_postcode)
+ expect(json_response["postcode_full"]).to eq(postcode_full)
end
context "with invalid json parameters" do
@@ -283,7 +283,7 @@ RSpec.describe CaseLogsController, type: :request do
la_known: 1,
is_la_inferred: true,
postcode_known: 1,
- property_postcode: "PO5 3TE")
+ postcode_full: "PO5 3TE")
id = case_log.id
get "/logs/#{id}/property-information/check-answers"
expected_inferred_answer = "Manchester"
@@ -309,7 +309,7 @@ RSpec.describe CaseLogsController, type: :request do
describe "PATCH" do
let(:case_log) do
- FactoryBot.create(:case_log, :in_progress, tenant_code: "Old Value", property_postcode: "M1 1AE")
+ FactoryBot.create(:case_log, :in_progress, tenant_code: "Old Value", postcode_full: "M1 1AE")
end
let(:params) do
{ tenant_code: "New Value" }
@@ -327,7 +327,7 @@ RSpec.describe CaseLogsController, type: :request do
it "updates the case log with the given fields and keeps original values where none are passed" do
case_log.reload
expect(case_log.tenant_code).to eq("New Value")
- expect(case_log.property_postcode).to eq("M1 1AE")
+ expect(case_log.postcode_full).to eq("M11AE")
end
context "with an invalid case log id" do
@@ -367,7 +367,7 @@ RSpec.describe CaseLogsController, type: :request do
# what actually happens to an ActiveRecord object and what we're doing here, but either is allowed.
describe "PUT" do
let(:case_log) do
- FactoryBot.create(:case_log, :in_progress, tenant_code: "Old Value", property_postcode: "SW1A 2AA")
+ FactoryBot.create(:case_log, :in_progress, tenant_code: "Old Value", postcode_full: "SW1A 2AA")
end
let(:params) do
{ tenant_code: "New Value" }
@@ -385,7 +385,7 @@ RSpec.describe CaseLogsController, type: :request do
it "updates the case log with the given fields and keeps original values where none are passed" do
case_log.reload
expect(case_log.tenant_code).to eq("New Value")
- expect(case_log.property_postcode).to eq("SW1A 2AA")
+ expect(case_log.postcode_full).to eq("SW1A2AA")
end
context "with an invalid case log id" do