From 24b8232874fc1d8e796fa4aab00170c52235b42b Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Tue, 17 Jan 2023 10:56:49 +0000 Subject: [PATCH] order bulk upload errors by cell (#1193) --- .../bulk_upload_error_row_component.rb | 8 +++++++- .../bulk_upload_error_row_component_spec.rb | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/components/bulk_upload_error_row_component.rb b/app/components/bulk_upload_error_row_component.rb index de33fbb3a..e19717954 100644 --- a/app/components/bulk_upload_error_row_component.rb +++ b/app/components/bulk_upload_error_row_component.rb @@ -2,7 +2,7 @@ class BulkUploadErrorRowComponent < ViewComponent::Base attr_reader :bulk_upload_errors def initialize(bulk_upload_errors:) - @bulk_upload_errors = bulk_upload_errors + @bulk_upload_errors = sorted_errors(bulk_upload_errors) super end @@ -45,4 +45,10 @@ class BulkUploadErrorRowComponent < ViewComponent::Base def sales? bulk_upload.log_type == "sales" end + +private + + def sorted_errors(errors) + errors.sort_by { |e| e.cell.rjust(3, "0") } + end end diff --git a/spec/components/bulk_upload_error_row_component_spec.rb b/spec/components/bulk_upload_error_row_component_spec.rb index 86222acf4..4950817f0 100644 --- a/spec/components/bulk_upload_error_row_component_spec.rb +++ b/spec/components/bulk_upload_error_row_component_spec.rb @@ -49,6 +49,22 @@ RSpec.describe BulkUploadErrorRowComponent, type: :component do expect(result).to have_content(expected) end + context "when multiple errors for a row" do + subject(:component) { described_class.new(bulk_upload_errors:) } + + let(:bulk_upload_errors) do + [ + build(:bulk_upload_error, cell: "Z1"), + build(:bulk_upload_error, cell: "AB1"), + build(:bulk_upload_error, cell: "A1"), + ] + end + + it "is sorted by cell" do + expect(component.bulk_upload_errors.map(&:cell)).to eql(%w[A1 Z1 AB1]) + end + end + context "when a sales bulk upload" do let(:bulk_upload) { create(:bulk_upload, :sales) } let(:field) { :field_87 }