Skip to content

Commit 0a1c06d

Browse files
authored
Merge pull request #175 from linqueta/add-active-admin-import-exception
Add ActiveAdminImport::Exception
2 parents ff3a6e9 + e4e23c9 commit 0a1c06d

File tree

4 files changed

+33
-1
lines changed

4 files changed

+33
-1
lines changed

lib/active_admin_import.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'active_admin'
44
require 'active_admin_import/version'
55
require 'active_admin_import/engine'
6+
require 'active_admin_import/exception'
67
require 'active_admin_import/import_result'
78
require 'active_admin_import/options'
89
require 'active_admin_import/dsl'

lib/active_admin_import/dsl.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ def active_admin_import(options = {}, &block)
9292
else
9393
instance_exec result, options, &DEFAULT_RESULT_PROC
9494
end
95-
rescue ActiveRecord::Import::MissingColumnError, NoMethodError, ActiveRecord::StatementInvalid, CSV::MalformedCSVError => e
95+
rescue ActiveRecord::Import::MissingColumnError,
96+
NoMethodError,
97+
ActiveRecord::StatementInvalid,
98+
CSV::MalformedCSVError,
99+
ActiveAdminImport::Exception => e
96100
Rails.logger.error(I18n.t('active_admin_import.file_error', message: e.message))
97101
Rails.logger.error(e.backtrace.join("\n"))
98102
flash[:error] = I18n.t('active_admin_import.file_error', message: e.message[0..200])
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# frozen_string_literal: true
2+
module ActiveAdminImport
3+
class Exception < StandardError
4+
end
5+
end

spec/import_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,28 @@ def upload_file!(name, ext = 'csv')
430430
upload_file!(:authors)
431431
expect(Author.count).to eq(2)
432432
end
433+
434+
context 'when the option before_import raises a ActiveAdminImport::Exception' do
435+
let(:options) { { before_import: ->(_) { raise ActiveAdminImport::Exception, 'error message' } } }
436+
437+
before { upload_file!(:authors) }
438+
439+
it 'should show error' do
440+
expect(page).to have_content I18n.t('active_admin_import.file_error', message: 'error message')
441+
expect(Author.count).to eq(0)
442+
end
443+
end
444+
445+
context 'when the option before_batch_import raises a ActiveAdminImport::Exception' do
446+
let(:options) { { before_batch_import: ->(_) { raise ActiveAdminImport::Exception, 'error message' } } }
447+
448+
before { upload_file!(:authors) }
449+
450+
it 'should show error' do
451+
expect(page).to have_content I18n.t('active_admin_import.file_error', message: 'error message')
452+
expect(Author.count).to eq(0)
453+
end
454+
end
433455
end
434456
end
435457

0 commit comments

Comments
 (0)