Browse Source

Normalise the postcodes

pull/421/head
Kat 3 years ago
parent
commit
2d4e346844
  1. 2
      app/models/case_log.rb
  2. 2
      spec/features/form/conditional_questions_spec.rb
  3. 2
      spec/features/form/saving_data_spec.rb
  4. 6
      spec/fixtures/exports/case_logs.xml
  5. 49
      spec/models/case_log_spec.rb
  6. 6
      spec/requests/case_logs_controller_spec.rb

2
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

2
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

2
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

6
spec/fixtures/exports/case_logs.xml vendored

@ -45,7 +45,7 @@
<tenancylength>5</tenancylength>
<tenancy>3</tenancy>
<landlord>1</landlord>
<ppostcode_full>SE2 6RT</ppostcode_full>
<ppostcode_full>SE26RT</ppostcode_full>
<rsnvac>7</rsnvac>
<unittype_gn>2</unittype_gn>
<beds>3</beds>
@ -57,7 +57,7 @@
<period>2</period>
<layear>2</layear>
<lawaitlist>1</lawaitlist>
<postcode_full>NW1 5TY</postcode_full>
<postcode_full>NW15TY</postcode_full>
<reasonpref>1</reasonpref>
<cbl>1</cbl>
<chr>1</chr>
@ -166,11 +166,11 @@
<wsupchrg>17.5</wsupchrg>
<wtcharge>162.5</wtcharge>
<wtshortfall>6.0</wtshortfall>
<refused>0</refused>
<housingneeds>1</housingneeds>
<vday>3</vday>
<vmonth>11</vmonth>
<vyear>2019</vyear>
<wchchrg/>
<refused>0</refused>
</form>
</forms>

49
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

6
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

Loading…
Cancel
Save