csv_import_magic 0.0.7 → 0.0.8
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 +5 -5
- data/app/models/importer.rb +6 -2
- data/app/services/csv_import_magic/importer.rb +1 -1
- data/app/views/csv_import_magic/importers/edit.html.erb +2 -2
- data/lib/csv_import_magic/version.rb +1 -1
- data/spec/lib/generators/csv_import_magic/views_generator_spec.rb +2 -2
- data/spec/models/importer_spec.rb +18 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3d5b5f8669105bb8d7983048f511abb334ef9d73
|
4
|
+
data.tar.gz: f2ebee5e087ef16940f41c4292b2762a59837e81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8266950fffe4d6d37b60884b491d8402311fc7a5c30f22f1ca7070378a4060355e8c80417d8dfad5054a9eac03cf51a90a2f2c8f9d366aa77f3efee832443836
|
7
|
+
data.tar.gz: 5563a6ce0f18183364f3ecdd25b13503c0502cb2591a3ebee8aae78a6a293a76317b7702acb1db4622278377d6e79115030bb0ce5235c6733c71cb850e5c2570
|
data/app/models/importer.rb
CHANGED
@@ -33,6 +33,10 @@ class Importer < ActiveRecord::Base
|
|
33
33
|
source_klass.columns_names(name_of_parser.to_sym)
|
34
34
|
end
|
35
35
|
|
36
|
+
def human_attribute_name(column, options = {})
|
37
|
+
I18n.translate(:"activemodel.attributes.#{source_klass.model_name.i18n_key}.csv_import_magic.#{column}", options.merge(default: source_klass.human_attribute_name(column)))
|
38
|
+
end
|
39
|
+
|
36
40
|
private
|
37
41
|
|
38
42
|
def set_parser
|
@@ -53,7 +57,7 @@ class Importer < ActiveRecord::Base
|
|
53
57
|
return if columns_to_translate.blank?
|
54
58
|
|
55
59
|
transalated_name_of_columns = columns_to_translate.map do |column|
|
56
|
-
|
60
|
+
human_attribute_name(column)
|
57
61
|
end.to_sentence
|
58
62
|
|
59
63
|
errors.add(:columns, I18n.t('errors.messages.missing', count: columns_to_translate.size, columns: transalated_name_of_columns))
|
@@ -70,7 +74,7 @@ class Importer < ActiveRecord::Base
|
|
70
74
|
|
71
75
|
headers_to_translate = duplicate_headers.uniq
|
72
76
|
headers_transalated = headers_to_translate.map do |header|
|
73
|
-
|
77
|
+
human_attribute_name(header)
|
74
78
|
end.to_sentence
|
75
79
|
|
76
80
|
errors.add(:columns, I18n.t('errors.messages.uniq', count: headers_to_translate.size, columns: headers_transalated))
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% columns = @importer.importable_columns(@importer.parser).map { |column| [@importer.
|
1
|
+
<% columns = @importer.importable_columns(@importer.parser).map { |column| [@importer.human_attribute_name(column), column] }.unshift([t('csv_import_magic.views.importers.edit.ignore_column_label'), :ignore]) %>
|
2
2
|
|
3
3
|
<h3 class='page-title'>
|
4
4
|
<%= t('csv_import_magic.views.importers.edit.title') %>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
</header>
|
18
18
|
|
19
19
|
<% selected = columns.find { |c| c.join(' ').match(/#{header}/i) }.try(:last).presence || :ignore %>
|
20
|
-
<%= f.input "columns]
|
20
|
+
<%= f.input "columns[]", as: :select, collection: columns, label: false, hint: t('csv_import_magic.views.importers.edit.hint'), include_blank: false, selected: f.object.columns[i] || selected %>
|
21
21
|
|
22
22
|
<header class="examples"><%= t('csv_import_magic.views.importers.edit.example_of_values') %></header>
|
23
23
|
<table>
|
@@ -64,7 +64,7 @@ RSpec.describe CsvImportMagic::Generators::ViewsGenerator, type: :generator do
|
|
64
64
|
|
65
65
|
specify 'check structure of edit view' do
|
66
66
|
edit_content = <<-EOF
|
67
|
-
<% columns = @importer.importable_columns(@importer.parser).map { |column| [@importer.
|
67
|
+
<% columns = @importer.importable_columns(@importer.parser).map { |column| [@importer.human_attribute_name(column), column] }.unshift([t('csv_import_magic.views.importers.edit.ignore_column_label'), :ignore]) %>
|
68
68
|
|
69
69
|
<h3 class='page-title'>
|
70
70
|
<%= t('csv_import_magic.views.importers.edit.title') %>
|
@@ -83,7 +83,7 @@ RSpec.describe CsvImportMagic::Generators::ViewsGenerator, type: :generator do
|
|
83
83
|
</header>
|
84
84
|
|
85
85
|
<% selected = columns.find { |c| c.join(' ').match(/#\{header\}/i) }.try(:last).presence || :ignore %>
|
86
|
-
<%= f.input "columns]
|
86
|
+
<%= f.input "columns[]", as: :select, collection: columns, label: false, hint: t('csv_import_magic.views.importers.edit.hint'), include_blank: false, selected: f.object.columns[i] || selected %>
|
87
87
|
|
88
88
|
<header class="examples"><%= t('csv_import_magic.views.importers.edit.example_of_values') %></header>
|
89
89
|
<table>
|
@@ -79,4 +79,22 @@ RSpec.describe Importer, type: :model do
|
|
79
79
|
let(:importer) { create(:importer, source: 'company') }
|
80
80
|
it { expect(importer.importable_columns).to match_array([:name, :street, :number, :neighborhood, :city, :state, :country]) }
|
81
81
|
end
|
82
|
+
|
83
|
+
context '#human_attribute_name' do
|
84
|
+
let(:importer) { create(:importer, source: 'company') }
|
85
|
+
column = 'name'
|
86
|
+
context 'without a translation set' do
|
87
|
+
it 'defaults to source_klass human_attribute_name' do
|
88
|
+
expect(importer.human_attribute_name(column)).to eq(importer.source_klass.human_attribute_name(column))
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'with a translation set' do
|
93
|
+
it 'returns scoped translation' do
|
94
|
+
allow(I18n).to receive(:translate)
|
95
|
+
allow(I18n).to receive(:translate).with(:"activemodel.attributes.company.csv_import_magic.name", default: importer.source_klass.human_attribute_name(column)).and_return('scoped transalation')
|
96
|
+
expect(importer.human_attribute_name(column)).to eq('scoped transalation')
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
82
100
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csv_import_magic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saulo Santiago
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -479,7 +479,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
479
479
|
version: '0'
|
480
480
|
requirements: []
|
481
481
|
rubyforge_project:
|
482
|
-
rubygems_version: 2.
|
482
|
+
rubygems_version: 2.6.10
|
483
483
|
signing_key:
|
484
484
|
specification_version: 4
|
485
485
|
summary: Engine for import CSV dynamically by model
|