Skip to content

Commit 1f674cc

Browse files
committed
refs #163, handle errors on base
1 parent 722c641 commit 1f674cc

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

lib/active_admin_import/import_result.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ def failed_message(options = {})
3333
limit = options[:limit] || failed.count
3434
failed.first(limit).map do |record|
3535
errors = record.errors
36-
(errors.full_messages.zip errors.keys.map { |k| record.send k }).map { |ms| ms.join(' - ') }.join(', ')
36+
failed_values = errors.keys.map do |key|
37+
key == :base ? nil : record.public_send(key)
38+
end
39+
errors.full_messages.zip(failed_values).map { |ms| ms.compact.join(' - ') }.join(', ')
3740
end.join(' ; ')
3841
end
3942
end

spec/import_result_spec.rb

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
context 'failed_message' do
66
let(:import_result) { ActiveAdminImport::ImportResult.new }
77

8-
before do
9-
Author.create(name: 'John', last_name: 'Doe')
10-
Author.create(name: 'Jane', last_name: 'Roe')
118

9+
let(:failed_instances) do
10+
[
11+
Author.new(last_name: 'Doe').tap {|r| r.errors.add(:last_name, :taken) },
12+
Author.new(name: "", last_name: 'Doe').tap {|r| r.errors.add(:name, :blank); r.errors.add(:last_name, :taken) },
13+
Author.new.tap {|r| r.errors.add(:base, 'custom') }
14+
]
15+
end
16+
17+
before do
1218
@result = double \
13-
failed_instances: [
14-
# {:last_name=>["has already been taken"]}
15-
Author.create(name: 'Jim', last_name: 'Doe'),
16-
# {:name=>["can't be blank"], :last_name=>["has already been taken"]}
17-
Author.create(name: nil, last_name: 'Doe')
18-
]
19+
failed_instances: failed_instances
1920
end
2021

2122
it 'should work without any failed instances' do
@@ -26,7 +27,7 @@
2627
import_result.add(@result, 4)
2728
expect(import_result.failed_message)
2829
.to eq(
29-
"Last name has already been taken - Doe ; Name can't be blank - , Last name has already been taken - Doe"
30+
"Last name has already been taken - Doe ; Name can't be blank - , Last name has already been taken - Doe ; custom"
3031
)
3132
end
3233

0 commit comments

Comments
 (0)