active_admin_import 4.1.0 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +5 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -1
- data/lib/active_admin_import/import_result.rb +4 -1
- data/lib/active_admin_import/importer.rb +14 -8
- data/lib/active_admin_import/version.rb +1 -1
- data/spec/fixtures/files/authors.csv +3 -3
- data/spec/import_result_spec.rb +11 -10
- data/spec/import_spec.rb +21 -8
- data/tasks/test.rake +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c8561a4c1622b426312994d56e93252fa2d6c96bd1d0e085e2a8873c3283d4b
|
4
|
+
data.tar.gz: 96a38edf7c6e7c7a787ba216b95922ed2ac7fe25d89b2d992617ad40b5209569
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a6224751a88d24ff8ceda5d690a77990c893cd1a4d5bf3a0041d1002bb946d9a54a3f0d0a4294e9bab901bb3700692431066cbcd39456763335f7eea902e039
|
7
|
+
data.tar.gz: 110c86f4845a57550024732f881ad8afd9d14ffd569907972e5a0a0c94249fa1a3caa0dbe2cb3f10d266e8b16cb0806dc279d331adeaf5209cf658675faa1113
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -33,7 +33,10 @@ module ActiveAdminImport
|
|
33
33
|
limit = options[:limit] || failed.count
|
34
34
|
failed.first(limit).map do |record|
|
35
35
|
errors = record.errors
|
36
|
-
|
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(', ')
|
37
40
|
end.join(' ; ')
|
38
41
|
end
|
39
42
|
end
|
@@ -70,7 +70,7 @@ module ActiveAdminImport
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
# Use
|
73
|
+
# Use this method when CSV file contains unnecessary columns
|
74
74
|
#
|
75
75
|
# Example:
|
76
76
|
#
|
@@ -81,16 +81,22 @@ module ActiveAdminImport
|
|
81
81
|
# end
|
82
82
|
#
|
83
83
|
def batch_slice_columns(slice_columns)
|
84
|
-
use_indexes
|
85
|
-
|
86
|
-
|
84
|
+
# Only set @use_indexes for the first batch so that @use_indexes are in correct
|
85
|
+
# position for subsequent batches
|
86
|
+
unless defined?(@use_indexes)
|
87
|
+
@use_indexes = []
|
88
|
+
headers.values.each_with_index do |val, index|
|
89
|
+
@use_indexes << index if val.in?(slice_columns)
|
90
|
+
end
|
91
|
+
return csv_lines if @use_indexes.empty?
|
92
|
+
|
93
|
+
# slice CSV headers
|
94
|
+
@headers = headers.to_a.values_at(*@use_indexes).to_h
|
87
95
|
end
|
88
|
-
|
89
|
-
# slice CSV headers
|
90
|
-
@headers = headers.to_a.values_at(*use_indexes).to_h
|
96
|
+
|
91
97
|
# slice CSV values
|
92
98
|
csv_lines.map! do |line|
|
93
|
-
line.values_at(
|
99
|
+
line.values_at(*@use_indexes)
|
94
100
|
end
|
95
101
|
end
|
96
102
|
|
@@ -1,3 +1,3 @@
|
|
1
|
-
Name,Last name
|
2
|
-
|
3
|
-
|
1
|
+
Birthday,Name,Last name
|
2
|
+
1986-05-01,John,Doe
|
3
|
+
1988-11-16,Jane,Roe
|
data/spec/import_result_spec.rb
CHANGED
@@ -5,17 +5,18 @@ describe ActiveAdminImport::ImportResult do
|
|
5
5
|
context 'failed_message' do
|
6
6
|
let(:import_result) { ActiveAdminImport::ImportResult.new }
|
7
7
|
|
8
|
-
before do
|
9
|
-
Author.create(name: 'John', last_name: 'Doe')
|
10
|
-
Author.create(name: 'Jane', last_name: 'Roe')
|
11
8
|
|
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
|
12
18
|
@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
|
19
20
|
end
|
20
21
|
|
21
22
|
it 'should work without any failed instances' do
|
@@ -26,7 +27,7 @@ describe ActiveAdminImport::ImportResult do
|
|
26
27
|
import_result.add(@result, 4)
|
27
28
|
expect(import_result.failed_message)
|
28
29
|
.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"
|
30
31
|
)
|
31
32
|
end
|
32
33
|
|
data/spec/import_spec.rb
CHANGED
@@ -434,11 +434,14 @@ describe 'import', type: :feature do
|
|
434
434
|
end
|
435
435
|
|
436
436
|
context "with slice_columns option" do
|
437
|
+
let(:batch_size) { 2 }
|
438
|
+
|
437
439
|
before do
|
438
440
|
add_author_resource template_object: ActiveAdminImport::Model.new,
|
439
441
|
before_batch_import: lambda { |importer|
|
440
442
|
importer.batch_slice_columns(slice_columns)
|
441
|
-
}
|
443
|
+
},
|
444
|
+
batch_size: batch_size
|
442
445
|
visit "/admin/authors/import"
|
443
446
|
upload_file!(:authors)
|
444
447
|
end
|
@@ -446,13 +449,23 @@ describe 'import', type: :feature do
|
|
446
449
|
context "slice last column and superfluous column" do
|
447
450
|
let(:slice_columns) { %w(name last_name not_existing_column) }
|
448
451
|
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
[
|
453
|
-
|
454
|
-
|
455
|
-
|
452
|
+
shared_examples_for "birthday column removed" do
|
453
|
+
it "should not fill `birthday` column" do
|
454
|
+
expect(Author.pluck(:name, :last_name, :birthday)).to match_array(
|
455
|
+
[
|
456
|
+
["Jane", "Roe", nil],
|
457
|
+
["John", "Doe", nil]
|
458
|
+
]
|
459
|
+
)
|
460
|
+
end
|
461
|
+
end
|
462
|
+
|
463
|
+
it_behaves_like "birthday column removed"
|
464
|
+
|
465
|
+
context "when doing more than one batch" do
|
466
|
+
let(:batch_size) { 1 }
|
467
|
+
|
468
|
+
it_behaves_like "birthday column removed"
|
456
469
|
end
|
457
470
|
end
|
458
471
|
|
data/tasks/test.rake
CHANGED
@@ -3,5 +3,5 @@ desc 'Creates a test rails app for the specs to run against'
|
|
3
3
|
task :setup do
|
4
4
|
require 'rails/version'
|
5
5
|
system('mkdir spec/rails') unless File.exist?('spec/rails')
|
6
|
-
system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb --skip-spring --skip-turbolinks"
|
6
|
+
system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb --skip-spring --skip-turbolinks --skip-bootsnap"
|
7
7
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_admin_import
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Fedoronchuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-import
|
@@ -148,8 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
|
-
|
152
|
-
rubygems_version: 2.7.7
|
151
|
+
rubygems_version: 3.0.6
|
153
152
|
signing_key:
|
154
153
|
specification_version: 4
|
155
154
|
summary: ActiveAdmin import based on activerecord-import gem.
|