From bcd6d15d5b3d9968f2b831f6665c8921015d6aad Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Fri, 21 Apr 2023 16:54:15 +0100 Subject: [PATCH] update tests to include a test of a full export and all values in teh csv --- spec/factories/organisation.rb | 4 ++++ spec/factories/sales_log.rb | 3 +++ .../files/sales_logs_csv_export_codes.csv | 2 ++ .../files/sales_logs_csv_export_labels.csv | 2 ++ spec/services/csv/sales_log_csv_service_spec.rb | 16 +++++++++++++--- 5 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 spec/fixtures/files/sales_logs_csv_export_codes.csv create mode 100644 spec/fixtures/files/sales_logs_csv_export_labels.csv diff --git a/spec/factories/organisation.rb b/spec/factories/organisation.rb index fa2650eb5..3b35581b8 100644 --- a/spec/factories/organisation.rb +++ b/spec/factories/organisation.rb @@ -14,6 +14,10 @@ FactoryBot.define do old_visible_id { rand(9_999_999).to_s } end + trait :id_one do + id { 1 } + end + trait :prp do provider_type { "PRP" } end diff --git a/spec/factories/sales_log.rb b/spec/factories/sales_log.rb index b17efec90..8764cc304 100644 --- a/spec/factories/sales_log.rb +++ b/spec/factories/sales_log.rb @@ -11,6 +11,9 @@ FactoryBot.define do jointpur { 2 } saledate { Time.utc(2023, 2, 2, 10, 36, 49) } end + trait :id_one do + id { 1 } + end trait :shared_ownership do ownershipsch { 1 } type { 30 } diff --git a/spec/fixtures/files/sales_logs_csv_export_codes.csv b/spec/fixtures/files/sales_logs_csv_export_codes.csv new file mode 100644 index 000000000..da0e640ac --- /dev/null +++ b/spec/fixtures/files/sales_logs_csv_export_codes.csv @@ -0,0 +1,2 @@ +id,status,created_at,updated_at,old_id,collection_start_year,creation_method,is_dpo,owning_organisation_name,created_by_name,saledate,purchid,ownershipsch,type,othtype,companybuy,buylivein,jointpur,jointmore,uprn,uprn_confirmed,address_line1,address_line2,town_or_city,county,pcode1,pcode2,la_known,la,la_label,beds,proptype,builtype,pcodenk,wchair,noint,privacynotice,age1,sex1,ethnic_group,ethnic,national,ecstat1,buy1livein,relat2,age2,sex2,ethnic_group2,ethnicbuy2,nationalbuy2,ecstat2,buy2livein,hholdcount,relat3,age3,sex3,ecstat3,relat4,age4,sex4,ecstat4,relat5,age5,sex5,ecstat5,relat6,age6,sex6,ecstat6,prevten,ppcodenk,ppostc1,ppostc2,previous_la_known,prevloc,prevloc_label,pregyrha,pregother,pregla,pregghb,pregblank,buy2living,prevtenbuy2,hhregres,hhregresstill,armedforcesspouse,disabled,wheel,income1nk,income1,inc1mort,income2nk,income2,inc2mort,hb,savingsnk,savings,prevown,prevshared,proplen_asked,proplen,staircase,stairbought,stairowned,staircasesale,resale,exday,exmonth,exyear,hoday,homonth,hoyear,lanomagr,soctenant,frombeds,fromprop,socprevten,value,equity,mortgageused,mortgage,mortgagelender,mortgagelenderother,mortlen,extrabor,deposit,cashdis,mrent,has_mscharge,mscharge,discount,grant +1,completed,2023-02-08 16:52:15 +0000,2023-02-08 16:52:15 +0000,,2022,single log,false,DLUHC,Danny Rojas,2023-02-02 10:36:49 +0000,,2,8,,,,1,1,,,,,,,SW1A,1AA,1,E09000003,Barnet,2,1,1,0,1,2,1,30,X,17,17,18,1,1,P,35,X,,,,1,1,1,C,14,X,9,X,,X,3,R,,X,2,R,,X,1,1,1,,,0,,,1,1,1,1,,,,1,4,5,1,1,0,10000,1,0,10000,1,4,1,,1,2,,10,,,,,,,,,,,,,,,,,110000.0,,1,20000.0,5,,10,1,80000.0,,,1,100.0,,10000.0 diff --git a/spec/fixtures/files/sales_logs_csv_export_labels.csv b/spec/fixtures/files/sales_logs_csv_export_labels.csv new file mode 100644 index 000000000..3a86d3434 --- /dev/null +++ b/spec/fixtures/files/sales_logs_csv_export_labels.csv @@ -0,0 +1,2 @@ +id,status,created_at,updated_at,old_id,collection_start_year,creation_method,is_dpo,owning_organisation_name,created_by_name,saledate,purchid,ownershipsch,type,othtype,companybuy,buylivein,jointpur,jointmore,uprn,uprn_confirmed,address_line1,address_line2,town_or_city,county,pcode1,pcode2,la_known,la,la_label,beds,proptype,builtype,pcodenk,wchair,noint,privacynotice,age1,sex1,ethnic_group,ethnic,national,ecstat1,buy1livein,relat2,age2,sex2,ethnic_group2,ethnicbuy2,nationalbuy2,ecstat2,buy2livein,hholdcount,relat3,age3,sex3,ecstat3,relat4,age4,sex4,ecstat4,relat5,age5,sex5,ecstat5,relat6,age6,sex6,ecstat6,prevten,ppcodenk,ppostc1,ppostc2,previous_la_known,prevloc,prevloc_label,pregyrha,pregother,pregla,pregghb,pregblank,buy2living,prevtenbuy2,hhregres,hhregresstill,armedforcesspouse,disabled,wheel,income1nk,income1,inc1mort,income2nk,income2,inc2mort,hb,savingsnk,savings,prevown,prevshared,proplen_asked,proplen,staircase,stairbought,stairowned,staircasesale,resale,exday,exmonth,exyear,hoday,homonth,hoyear,lanomagr,soctenant,frombeds,fromprop,socprevten,value,equity,mortgageused,mortgage,mortgagelender,mortgagelenderother,mortlen,extrabor,deposit,cashdis,mrent,has_mscharge,mscharge,discount,grant +1,completed,2023-02-08 16:52:15 +0000,2023-02-08 16:52:15 +0000,,2022,single log,false,DLUHC,Danny Rojas,2023-02-02 10:36:49 +0000,,Yes - a discounted ownership scheme,Right to Acquire (RTA),,,,Yes,Yes,,,,,,,SW1A,1AA,Yes,E09000003,Barnet,2,Flat or maisonette,Purpose built,Yes,Yes,Yes,1,30,Non-binary,Buyer 1 prefers not to say,17,United Kingdom,Full-time - 30 hours or more,Yes,Partner,35,Non-binary,,,,Full-time - 30 hours or more,Yes,1,Child,14,Non-binary,Child under 16,Other,,Non-binary,"In government training into work, such as New Deal",Person prefers not to say,,Non-binary,Part-time - Less than 30 hours,Person prefers not to say,,Non-binary,Full-time - 30 hours or more,Local authority tenant,No,,,No,,,1,1,1,1,,,,Yes,Yes,No,Yes,Yes,Yes,10000,Yes,Yes,10000,Yes,Don’t know ,No,,Yes,2,,10,,,,,,,,,,,,,,,,,110000.0,,Yes,20000.0,Cambridge Building Society,,10,Yes,80000.0,,,Yes,100.0,,10000.0 diff --git a/spec/services/csv/sales_log_csv_service_spec.rb b/spec/services/csv/sales_log_csv_service_spec.rb index c13c7357d..851d034c1 100644 --- a/spec/services/csv/sales_log_csv_service_spec.rb +++ b/spec/services/csv/sales_log_csv_service_spec.rb @@ -2,7 +2,8 @@ require "rails_helper" RSpec.describe Csv::SalesLogCsvService do let(:form_handler_mock) { instance_double(FormHandler) } - let!(:log) { create(:sales_log, :completed) } + let(:organisation) { create(:organisation, :id_one) } + let!(:log) { create(:sales_log, :completed, :id_one, owning_organisation: organisation) } let(:service) { described_class.new(export_type: "labels") } let(:csv) { CSV.parse(service.prepare_csv(SalesLog.all)) } @@ -45,8 +46,7 @@ RSpec.describe Csv::SalesLogCsvService do it "returns a csv string with the correct number of logs" do create_list(:sales_log, 15) - all_logs = SalesLog.all - log_count = all_logs.count + log_count = SalesLog.count expected_row_count_with_headers = log_count + 1 expect(csv.size).to be expected_row_count_with_headers end @@ -85,6 +85,11 @@ RSpec.describe Csv::SalesLogCsvService do la_label_value = csv.second[la_label_column_index] expect(la_label_value).to eq "Barnet" end + + it "exports the CSV with all values correct" do + expected_content = File.open("spec/fixtures/files/sales_logs_csv_export_labels.csv", "r:UTF-8").read + expect(service.prepare_csv(SalesLog.all)).to eq expected_content + end end context "when exporting values as codes" do @@ -123,5 +128,10 @@ RSpec.describe Csv::SalesLogCsvService do la_label_value = csv.second[la_label_column_index] expect(la_label_value).to eq "Barnet" end + + it "exports the CSV with all values correct" do + expected_content = File.open("spec/fixtures/files/sales_logs_csv_export_codes.csv", "r:UTF-8").read + expect(service.prepare_csv(SalesLog.all)).to eq expected_content + end end end