diff --git a/app/services/exports/lettings_log_export_constants.rb b/app/services/exports/lettings_log_export_constants.rb
index ddef610d5..b954a5afd 100644
--- a/app/services/exports/lettings_log_export_constants.rb
+++ b/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
diff --git a/spec/fixtures/exports/general_needs_log_26_27.xml b/spec/fixtures/exports/general_needs_log_26_27.xml
index 71b334a4b..745497f0c 100644
--- a/spec/fixtures/exports/general_needs_log_26_27.xml
+++ b/spec/fixtures/exports/general_needs_log_26_27.xml
@@ -6,6 +6,8 @@
35
F
F
+ 1
+
2
6
0
@@ -13,30 +15,44 @@
32
M
M
+ 2
+ Non-binary
6
+
+
+
+
+
+
+
+
+
+
+
+
1
4
diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb
index 5e1dff30c..38cb2e130 100644
--- a/spec/services/exports/lettings_log_export_service_spec.rb
+++ b/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") }
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 3a4a7daed..73a1c06af 100644
--- a/spec/spec_helper.rb
+++ b/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|