diff --git a/app/models/eligible_fe_providers_importer.rb b/app/models/eligible_fe_providers_importer.rb index fdbf66582e..b710a4a3bb 100644 --- a/app/models/eligible_fe_providers_importer.rb +++ b/app/models/eligible_fe_providers_importer.rb @@ -31,8 +31,8 @@ def delete_all_scope def row_to_hash(row) { ukprn: row.fetch("ukprn"), - max_award_amount: row.fetch("max_award_amount"), - lower_award_amount: row.fetch("lower_award_amount"), + max_award_amount: row.fetch("max_award_amount").gsub(/£|,/, ""), + lower_award_amount: row.fetch("lower_award_amount").gsub(/£|,/, ""), primary_key_contact_email_address: row.fetch("primary_key_contact_email_address"), academic_year: } diff --git a/spec/models/eligible_fe_providers_importer_spec.rb b/spec/models/eligible_fe_providers_importer_spec.rb index 14fe3a1b3b..deb73f54e0 100644 --- a/spec/models/eligible_fe_providers_importer_spec.rb +++ b/spec/models/eligible_fe_providers_importer_spec.rb @@ -114,5 +114,34 @@ def to_row(hash) end end end + + context "when currency values has GBP symbols and thousand separators" do + before do + file.write correct_headers + + 3.times do + file.write to_row(attributes_for(:eligible_fe_provider).merge(max_award_amount: '"£6,000"', lower_award_amount: '"£3,000"')) + end + + file.close + end + + it "ignores superfluous characters and imports new records" do + expect { subject.run }.to change { EligibleFeProvider.count }.by(3) + expect(EligibleFeProvider.pluck(:max_award_amount).uniq).to eql([6000]) + expect(EligibleFeProvider.pluck(:lower_award_amount).uniq).to eql([3000]) + end + + context "when there are existing records" do + before do + create(:eligible_fe_provider) + create(:eligible_fe_provider, academic_year: AcademicYear.next) + end + + it "deletes them with new records" do + expect { subject.run }.to change { EligibleFeProvider.count }.by(2) + end + end + end end end