Browse Source

CLDC-4142: Add new fields to xml export

also improve xml export matcher to report differences
pull/3161/head
Samuel Young 2 weeks ago
parent
commit
6a79feca36
  1. 2
      app/services/exports/lettings_log_export_constants.rb
  2. 16
      spec/fixtures/exports/general_needs_log_26_27.xml
  3. 36
      spec/services/exports/lettings_log_export_service_spec.rb
  4. 4
      spec/spec_helper.rb

2
app/services/exports/lettings_log_export_constants.rb

@ -231,5 +231,7 @@ module Exports::LettingsLogExportConstants
(1..8).each do |index|
YEAR_2026_EXPORT_FIELDS << "sexrab#{index}"
YEAR_2026_EXPORT_FIELDS << "gender_same_as_sex#{index}"
YEAR_2026_EXPORT_FIELDS << "gender_description#{index}"
end
end

16
spec/fixtures/exports/general_needs_log_26_27.xml vendored

@ -6,6 +6,8 @@
<age1>35</age1>
<sexrab1>F</sexrab1>
<sex1>F</sex1>
<gender_same_as_sex1>1</gender_same_as_sex1>
<gender_description1/>
<ethnic>2</ethnic>
<prevten>6</prevten>
<ecstat1>0</ecstat1>
@ -13,30 +15,44 @@
<age2>32</age2>
<sexrab2>M</sexrab2>
<sex2>M</sex2>
<gender_same_as_sex2>2</gender_same_as_sex2>
<gender_description2>Non-binary</gender_description2>
<ecstat2>6</ecstat2>
<age3/>
<sexrab3/>
<sex3/>
<gender_same_as_sex3/>
<gender_description3/>
<ecstat3/>
<age4/>
<sexrab4/>
<sex4/>
<gender_same_as_sex4/>
<gender_description4/>
<ecstat4/>
<age5/>
<sexrab5/>
<sex5/>
<gender_same_as_sex5/>
<gender_description5/>
<ecstat5/>
<age6/>
<sexrab6/>
<sex6/>
<gender_same_as_sex6/>
<gender_description6/>
<ecstat6/>
<age7/>
<sexrab7/>
<sex7/>
<gender_same_as_sex7/>
<gender_description7/>
<ecstat7/>
<age8/>
<sexrab8/>
<sex8/>
<gender_same_as_sex8/>
<gender_description8/>
<ecstat8/>
<homeless>1</homeless>
<underoccupation_benefitcap>4</underoccupation_benefitcap>

36
spec/services/exports/lettings_log_export_service_spec.rb

@ -497,7 +497,41 @@ RSpec.describe Exports::LettingsLogExportService do
end
context "and one lettings log is available for export" do
let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, startdate: Time.zone.local(2026, 4, 3), assigned_to: user, age1: 35, sexrab1: "F", sex1: "F", age2: 32, sexrab2: "M", sex2: "M", ppostcode_full: "A1 1AA", nationality_all_group: 13, propcode: "123", postcode_full: "SE2 6RT", tenancycode: "BZ737", voiddate: Time.zone.local(2021, 11, 3), mrcdate: Time.zone.local(2022, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4, creation_method: 2, bulk_upload_id: 1, address_line1_as_entered: "address line 1 as entered", address_line2_as_entered: "address line 2 as entered", town_or_city_as_entered: "town or city as entered", county_as_entered: "county as entered", postcode_full_as_entered: "AB1 2CD", la_as_entered: "la as entered", manual_address_entry_selected: false, uprn: "1", uprn_known: 1) }
let!(:lettings_log) do
FactoryBot.create(
:lettings_log,
:completed,
startdate: Time.zone.local(2026, 4, 3),
assigned_to: user,
age1: 35,
sexrab1: "F",
sex1: "F",
age2: 32,
sexrab2: "M",
sex2: "M",
ppostcode_full: "A1 1AA",
nationality_all_group: 13,
propcode: "123",
postcode_full: "SE2 6RT",
tenancycode: "BZ737",
voiddate: Time.zone.local(2021, 11, 3),
mrcdate: Time.zone.local(2022, 5, 5, 10, 36, 49),
tenancylength: 5,
underoccupation_benefitcap: 4,
creation_method: 2,
bulk_upload_id: 1,
address_line1_as_entered: "address line 1 as entered",
address_line2_as_entered: "address line 2 as entered",
town_or_city_as_entered: "town or city as entered",
county_as_entered: "county as entered",
postcode_full_as_entered: "AB1 2CD",
la_as_entered: "la as entered",
manual_address_entry_selected: false,
uprn: "1",
uprn_known: 1,
gender_description2: "Non-binary",
)
end
let(:expected_zip_filename) { "core_2026_2027_apr_mar_f0001_inc0001.zip" }
let(:expected_data_filename) { "core_2026_2027_apr_mar_f0001_inc0001_pt001.xml" }
let(:xml_export_file) { File.open("spec/fixtures/exports/general_needs_log_26_27.xml", "r:UTF-8") }

4
spec/spec_helper.rb

@ -141,7 +141,9 @@ RSpec::Matchers.define :have_same_xml_contents_as do |expected|
end
failure_message do |actual|
"expected that unordered #{fix_xml_content_order(actual)} would be equal to unordered #{fix_xml_content_order(expected)}"
actual_unique_lines = fix_xml_content_order(actual).split("\n") - fix_xml_content_order(expected).split("\n")
expected_unique_lines = fix_xml_content_order(expected).split("\n") - fix_xml_content_order(actual).split("\n")
"expected that unordered #{fix_xml_content_order(actual)} would be equal to unordered #{fix_xml_content_order(expected)}. Unique lines in actual: #{actual_unique_lines.join("\n")}. Unique lines in expected: #{expected_unique_lines.join("\n")}"
end
failure_message_when_negated do |actual|

Loading…
Cancel
Save