diff --git a/app/models/case_log.rb b/app/models/case_log.rb
index 65b409ab9..076ecb790 100644
--- a/app/models/case_log.rb
+++ b/app/models/case_log.rb
@@ -397,10 +397,12 @@ private
end
def process_postcode_changes!
+ 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!
+ 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
diff --git a/spec/features/form/conditional_questions_spec.rb b/spec/features/form/conditional_questions_spec.rb
index 624a25f8f..db558c93a 100644
--- a/spec/features/form/conditional_questions_spec.rb
+++ b/spec/features/form/conditional_questions_spec.rb
@@ -40,7 +40,7 @@ RSpec.describe "Form Conditional Questions" do
it "is displayed correctly" do
case_log.update!(postcode_known: 1, postcode_full: "NW1 6RT")
visit("/logs/#{id}/property-postcode")
- expect(page).to have_field("case-log-postcode-full-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/saving_data_spec.rb b/spec/features/form/saving_data_spec.rb
index 5f0928adb..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-postcode-full-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/exports/case_logs.xml b/spec/fixtures/exports/case_logs.xml
index 0246d8ddd..f7c58e086 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
@@ -166,11 +166,11 @@
17.5
162.5
6.0
+ 0
1
3
11
2019
- 0
diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb
index e22f3bc32..e94434cef 100644
--- a/spec/models/case_log_spec.rb
+++ b/spec/models/case_log_spec.rb
@@ -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/)
@@ -1149,6 +1158,24 @@ RSpec.describe CaseLog do
})
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")
@@ -1197,7 +1224,7 @@ RSpec.describe CaseLog do
address_case_log.update!({ postcode_known: 1, postcode_full: "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("M1 1AD")
+ 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
@@ -1218,6 +1245,24 @@ RSpec.describe CaseLog do
})
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")
@@ -1268,7 +1313,7 @@ RSpec.describe CaseLog do
address_case_log.update!({ previous_postcode_known: 0, ppostcode_full: "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("M1 1AD")
+ 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/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb
index 346f61182..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(:postcode_full) { "SE11 6TY" }
+ let(:postcode_full) { "SE116TY" }
let(:in_progress) { "in_progress" }
let(:completed) { "completed" }
@@ -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.postcode_full).to eq("M1 1AE")
+ expect(case_log.postcode_full).to eq("M11AE")
end
context "with an invalid case log id" do
@@ -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.postcode_full).to eq("SW1A 2AA")
+ expect(case_log.postcode_full).to eq("SW1A2AA")
end
context "with an invalid case log id" do