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 end
def process_postcode_changes! 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") process_postcode(postcode_full, "postcode_known", "is_la_inferred", "la", "postcode", "postcod2")
end end
def process_previous_postcode_changes! 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") process_postcode(ppostcode_full, "previous_postcode_known", "is_previous_la_inferred", "prevloc", "ppostc1", "ppostc2")
end end

2
spec/features/form/conditional_questions_spec.rb

@ -40,7 +40,7 @@ RSpec.describe "Form Conditional Questions" do
it "is displayed correctly" do it "is displayed correctly" do
case_log.update!(postcode_known: 1, postcode_full: "NW1 6RT") case_log.update!(postcode_known: 1, postcode_full: "NW1 6RT")
visit("/logs/#{id}/property-postcode") 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 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 it "displays number answers in inputs if they are already saved" do
visit("/logs/#{id}/property-postcode") 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 end
it "displays text answers in inputs if they are already saved" do 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> <tenancylength>5</tenancylength>
<tenancy>3</tenancy> <tenancy>3</tenancy>
<landlord>1</landlord> <landlord>1</landlord>
<ppostcode_full>SE2 6RT</ppostcode_full> <ppostcode_full>SE26RT</ppostcode_full>
<rsnvac>7</rsnvac> <rsnvac>7</rsnvac>
<unittype_gn>2</unittype_gn> <unittype_gn>2</unittype_gn>
<beds>3</beds> <beds>3</beds>
@ -57,7 +57,7 @@
<period>2</period> <period>2</period>
<layear>2</layear> <layear>2</layear>
<lawaitlist>1</lawaitlist> <lawaitlist>1</lawaitlist>
<postcode_full>NW1 5TY</postcode_full> <postcode_full>NW15TY</postcode_full>
<reasonpref>1</reasonpref> <reasonpref>1</reasonpref>
<cbl>1</cbl> <cbl>1</cbl>
<chr>1</chr> <chr>1</chr>
@ -166,11 +166,11 @@
<wsupchrg>17.5</wsupchrg> <wsupchrg>17.5</wsupchrg>
<wtcharge>162.5</wtcharge> <wtcharge>162.5</wtcharge>
<wtshortfall>6.0</wtshortfall> <wtshortfall>6.0</wtshortfall>
<refused>0</refused>
<housingneeds>1</housingneeds> <housingneeds>1</housingneeds>
<vday>3</vday> <vday>3</vday>
<vmonth>11</vmonth> <vmonth>11</vmonth>
<vyear>2019</vyear> <vyear>2019</vyear>
<wchchrg/> <wchchrg/>
<refused>0</refused>
</form> </form>
</forms> </forms>

49
spec/models/case_log_spec.rb

@ -1134,6 +1134,15 @@ RSpec.describe CaseLog do
end end
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 context "when saving addresses" do
before do before do
stub_request(:get, /api.postcodes.io/) stub_request(:get, /api.postcodes.io/)
@ -1149,6 +1158,24 @@ RSpec.describe CaseLog do
}) })
end 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 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] 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") 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" }) 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] 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(address_case_log.la).to eq("E08000003")
expect(record_from_db["la"]).to eq("E08000003") expect(record_from_db["la"]).to eq("E08000003")
end end
@ -1218,6 +1245,24 @@ RSpec.describe CaseLog do
}) })
end 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 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] 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") 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" }) 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] 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(address_case_log.prevloc).to eq("E08000003")
expect(record_from_db["prevloc"]).to eq("E08000003") expect(record_from_db["prevloc"]).to eq("E08000003")
end end

6
spec/requests/case_logs_controller_spec.rb

@ -29,7 +29,7 @@ RSpec.describe CaseLogsController, type: :request do
let(:age1) { 35 } let(:age1) { 35 }
let(:offered) { 12 } let(:offered) { 12 }
let(:period) { 2 } let(:period) { 2 }
let(:postcode_full) { "SE11 6TY" } let(:postcode_full) { "SE116TY" }
let(:in_progress) { "in_progress" } let(:in_progress) { "in_progress" }
let(:completed) { "completed" } 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 it "updates the case log with the given fields and keeps original values where none are passed" do
case_log.reload case_log.reload
expect(case_log.tenant_code).to eq("New Value") 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 end
context "with an invalid case log id" do 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 it "updates the case log with the given fields and keeps original values where none are passed" do
case_log.reload case_log.reload
expect(case_log.tenant_code).to eq("New Value") 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 end
context "with an invalid case log id" do context "with an invalid case log id" do

Loading…
Cancel
Save