Prioritize attribute errors over product validations

With product validations being prioritized, custom and
insightful error messages were being overwriten by
general and ambiguous model validations, which
were confusing users
This commit is contained in:
Vinicius Uehara
2022-10-30 11:47:39 -03:00
parent 1f498e6052
commit f6cc9fca26
2 changed files with 21 additions and 1 deletions

View File

@@ -68,7 +68,7 @@ module ProductImport
def invalid_attributes
invalid_attrs = {}
errors = @product_validations ? self.errors.messages.merge(@product_validations.messages) : self.errors.messages
errors = @product_validations ? @product_validations.messages.merge(self.errors.messages) : self.errors.messages
errors.each do |attr, message|
invalid_attrs[attr.to_s] = "#{attr.to_s.capitalize} #{message.first}"
end

View File

@@ -272,6 +272,26 @@ describe ProductImport::ProductImporter do
end
end
describe "when shipping category is not found" do
let(:csv_data) {
CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type",
"variant_unit_name", "on_demand", "shipping_category"]
csv << ["Shipping Test", enterprise.name, "Vegetables", "5", "3.20", "500", "g", "", nil,
"not_found"]
end
}
let(:importer) { import_data csv_data }
it "raises an error" do
importer.validate_entries
entries = JSON.parse(importer.entries_json)
error = entries['2']['errors']['shipping_category']
expect(error).to include "Shipping_category doesn't match allowed categories"
end
end
describe "when enterprises are not valid" do
let(:csv_data) {
CSV.generate do |csv|