importable 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.
- data/lib/importable/imported_items_validator.rb +13 -2
- data/lib/importable/mapper.rb +31 -0
- data/lib/importable/version.rb +1 -1
- data/spec/acceptance/import_spreadsheet_spec.rb +4 -4
- data/spec/dummy/app/imports/foo_with_relations_mapper.rb +15 -0
- data/spec/dummy/app/models/foo.rb +3 -0
- data/spec/dummy/app/models/foo_relation.rb +3 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20110913175348_create_foos.rb +2 -0
- data/spec/dummy/db/migrate/20110913375348_create_foo_relations.rb +7 -0
- data/spec/dummy/db/schema.rb +6 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +70 -0
- data/spec/dummy/log/test.log +8395 -0
- data/spec/dummy/tmp/capybara/capybara-201109300007211668347725.html +40 -0
- data/spec/lib/imported_item_validator_spec.rb +21 -4
- data/spec/lib/mapper_spec.rb +5 -4
- data/spec/support/files/foo_with_relations.xls +0 -0
- metadata +44 -33
- data/db/development.sqlite3 +0 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<title>Dummy</title>
|
6
|
+
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css">
|
7
|
+
<script src="/assets/application.js" type="text/javascript"></script>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
|
12
|
+
<h1>Foo required field spreadsheet upload</h1>
|
13
|
+
|
14
|
+
<form accept-charset="UTF-8" action="/import/foo_required_field/spreadsheet" enctype="multipart/form-data" method="post">
|
15
|
+
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
16
|
+
<div id="error_explanation">
|
17
|
+
<h2>2 errors prohibited this foo required field spreadsheet from being saved:</h2>
|
18
|
+
|
19
|
+
<ul>
|
20
|
+
<li>Doof on line 3 can't be blank</li>
|
21
|
+
<li>Doof on line 4 can't be blank</li>
|
22
|
+
</ul>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
|
26
|
+
<h2>File upload</h2>
|
27
|
+
|
28
|
+
<p><label for="file">Choose foo required field spreadsheet file</label></p>
|
29
|
+
<p><input id="file" name="file" type="file"></p>
|
30
|
+
|
31
|
+
<input id="current_step" name="current_step" type="hidden" value="upload_file"><div class="actions">
|
32
|
+
<p>
|
33
|
+
<input id="return_to" name="return_to" type="hidden" value="import"><input name="commit" type="submit" value="Upload"></p>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
</form>
|
37
|
+
|
38
|
+
|
39
|
+
</body>
|
40
|
+
</html>
|
@@ -12,6 +12,16 @@ module Importable
|
|
12
12
|
Spreadsheet.new(file: File.open(spreadsheet_file), mapper_name: 'foo_required_field')
|
13
13
|
end
|
14
14
|
|
15
|
+
let(:foo_with_relations_spreadsheet) do
|
16
|
+
spreadsheet_file = support_file('foo_with_relations.xls')
|
17
|
+
Spreadsheet.new(file: File.open(spreadsheet_file), mapper_name: 'foo_with_relations')
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:foo_with_relations_with_link_spreadsheet) do
|
21
|
+
spreadsheet_file = support_file('foo_with_relations.xls')
|
22
|
+
Spreadsheet.new(file: File.open(spreadsheet_file), mapper_name: 'foo_with_relations_with_link')
|
23
|
+
end
|
24
|
+
|
15
25
|
let(:invalid_spreadsheet_require_params) do
|
16
26
|
spreadsheet_file = support_file('foo_required_field_invalid.xlsx')
|
17
27
|
Spreadsheet.new(file: File.open(spreadsheet_file), mapper_name: 'foo_required_param_and_field')
|
@@ -35,15 +45,22 @@ module Importable
|
|
35
45
|
invalid_spreadsheet.errors.should be_empty
|
36
46
|
end
|
37
47
|
|
48
|
+
it "should be valid if all underlying objects are valid" do
|
49
|
+
valid_spreadsheet.should be_valid
|
50
|
+
end
|
51
|
+
|
38
52
|
it "should generate a list of meaningful error messages" do
|
39
53
|
invalid_spreadsheet.valid?
|
40
54
|
messages = invalid_spreadsheet.errors.messages[:doof]
|
41
|
-
messages.should include "can't be blank
|
42
|
-
messages.should include "can't be blank
|
55
|
+
messages.should include "on line 3 can't be blank"
|
56
|
+
messages.should include "on line 4 can't be blank"
|
43
57
|
end
|
44
58
|
|
45
|
-
it "should
|
46
|
-
|
59
|
+
it "should generate errors messages that show the original value if it was not blank but resulted in a nil attribute" do
|
60
|
+
foo_with_relations_spreadsheet.valid?
|
61
|
+
|
62
|
+
messages = foo_with_relations_spreadsheet.errors.messages[:foo_relation_id]
|
63
|
+
messages.should include "on line 5 could not be found: exists not"
|
47
64
|
end
|
48
65
|
end
|
49
66
|
end
|
data/spec/lib/mapper_spec.rb
CHANGED
@@ -108,11 +108,12 @@ module Importable
|
|
108
108
|
Mapper.mapper_types[4].should eq 'foo_required_param_and_field'
|
109
109
|
Mapper.mapper_types[5].should eq 'foo_required_param_resource'
|
110
110
|
Mapper.mapper_types[6].should eq 'foo_resource'
|
111
|
-
Mapper.mapper_types[7].should eq '
|
112
|
-
Mapper.mapper_types[8].should eq '
|
113
|
-
Mapper.mapper_types[9].should eq '
|
111
|
+
Mapper.mapper_types[7].should eq 'foo_with_relations'
|
112
|
+
Mapper.mapper_types[8].should eq 'moof'
|
113
|
+
Mapper.mapper_types[9].should eq 'plural_widgets'
|
114
|
+
Mapper.mapper_types[10].should eq 'singular_widget'
|
114
115
|
|
115
|
-
Mapper.mapper_types.should have_exactly(
|
116
|
+
Mapper.mapper_types.should have_exactly(11).items
|
116
117
|
end
|
117
118
|
end
|
118
119
|
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: importable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-30 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70260575092440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70260575092440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: carrierwave
|
27
|
-
requirement: &
|
27
|
+
requirement: &70260575091880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.5.7
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70260575091880
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: roo
|
38
|
-
requirement: &
|
38
|
+
requirement: &70260575091420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.9.7
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70260575091420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rubyzip2
|
49
|
-
requirement: &
|
49
|
+
requirement: &70260575090920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.0.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70260575090920
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: spreadsheet
|
60
|
-
requirement: &
|
60
|
+
requirement: &70260575090460 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.6.5.9
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70260575090460
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: google-spreadsheet-ruby
|
71
|
-
requirement: &
|
71
|
+
requirement: &70260575090000 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.1.5
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70260575090000
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sqlite3
|
82
|
-
requirement: &
|
82
|
+
requirement: &70260575089480 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.3.4
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70260575089480
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec-rails
|
93
|
-
requirement: &
|
93
|
+
requirement: &70260575088940 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 2.6.1
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70260575088940
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: capybara
|
104
|
-
requirement: &
|
104
|
+
requirement: &70260575088420 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 1.1.1
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70260575088420
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: launchy
|
115
|
-
requirement: &
|
115
|
+
requirement: &70260575087880 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 2.0.5
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70260575087880
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: mocha
|
126
|
-
requirement: &
|
126
|
+
requirement: &70260575087340 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 0.10.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70260575087340
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: guard-rspec
|
137
|
-
requirement: &
|
137
|
+
requirement: &70260575086860 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: 0.4.5
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70260575086860
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: fakeweb
|
148
|
-
requirement: &
|
148
|
+
requirement: &70260575086340 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: 1.3.0
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70260575086340
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: vcr
|
159
|
-
requirement: &
|
159
|
+
requirement: &70260575085820 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ~>
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
version: 1.11.3
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70260575085820
|
168
168
|
description: An engine for importing spreadsheets (or `ActiveResources`) into a Rails
|
169
169
|
app, easily.
|
170
170
|
email:
|
@@ -194,7 +194,6 @@ files:
|
|
194
194
|
- app/views/importable/spreadsheets/new.html.erb
|
195
195
|
- app/views/importable/spreadsheets/show.html.erb
|
196
196
|
- config/routes.rb
|
197
|
-
- db/development.sqlite3
|
198
197
|
- db/migrate/20110915001957_create_importable_spreadsheets.rb
|
199
198
|
- db/migrate/20110925024334_rename_spreadsheet_object_type_to_mapper_name.rb
|
200
199
|
- db/migrate/20110925034334_rename_spreadsheet_to_importer.rb
|
@@ -232,11 +231,13 @@ files:
|
|
232
231
|
- spec/dummy/app/imports/foo_required_param_mapper.rb
|
233
232
|
- spec/dummy/app/imports/foo_required_param_resource_mapper.rb
|
234
233
|
- spec/dummy/app/imports/foo_resource_mapper.rb
|
234
|
+
- spec/dummy/app/imports/foo_with_relations_mapper.rb
|
235
235
|
- spec/dummy/app/imports/moof_mapper.rb
|
236
236
|
- spec/dummy/app/imports/plural_widgets_mapper.rb
|
237
237
|
- spec/dummy/app/imports/singular_widget_mapper.rb
|
238
238
|
- spec/dummy/app/models/foo.rb
|
239
239
|
- spec/dummy/app/models/foo_importer.rb
|
240
|
+
- spec/dummy/app/models/foo_relation.rb
|
240
241
|
- spec/dummy/app/models/foo_required_field.rb
|
241
242
|
- spec/dummy/app/models/foo_required_param_resource.rb
|
242
243
|
- spec/dummy/app/models/foo_resource.rb
|
@@ -269,8 +270,10 @@ files:
|
|
269
270
|
- spec/dummy/db/migrate/20110913175340_create_foo_required_fields.rb
|
270
271
|
- spec/dummy/db/migrate/20110913175348_create_foos.rb
|
271
272
|
- spec/dummy/db/migrate/20110913275348_create_foo_importers.rb
|
273
|
+
- spec/dummy/db/migrate/20110913375348_create_foo_relations.rb
|
272
274
|
- spec/dummy/db/schema.rb
|
273
275
|
- spec/dummy/db/test.sqlite3
|
276
|
+
- spec/dummy/log/development.log
|
274
277
|
- spec/dummy/log/test.log
|
275
278
|
- spec/dummy/public/404.html
|
276
279
|
- spec/dummy/public/422.html
|
@@ -293,6 +296,7 @@ files:
|
|
293
296
|
- spec/dummy/tmp/capybara/capybara-201109281703086938696640.html
|
294
297
|
- spec/dummy/tmp/capybara/capybara-201109281704531943698731.html
|
295
298
|
- spec/dummy/tmp/capybara/capybara-201109281705406407095670.html
|
299
|
+
- spec/dummy/tmp/capybara/capybara-201109300007211668347725.html
|
296
300
|
- spec/dummy/tmp/uploads/importable/spreadsheet/file/foo/1/foo_multi_worksheet.xlsx
|
297
301
|
- spec/dummy/tmp/uploads/importable/spreadsheet/file/foo/1/foo_single_worksheet.xlsx
|
298
302
|
- spec/dummy/tmp/uploads/importable/spreadsheet/file/foo_required_field/1/foo_multi_worksheet_required_field_invalid.xlsx
|
@@ -316,6 +320,7 @@ files:
|
|
316
320
|
- spec/support/files/foo_required_field_valid.xlsx
|
317
321
|
- spec/support/files/foo_single_worksheet.xls
|
318
322
|
- spec/support/files/foo_single_worksheet.xlsx
|
323
|
+
- spec/support/files/foo_with_relations.xls
|
319
324
|
- spec/support/files/text.txt
|
320
325
|
- spec/support/vcr.rb
|
321
326
|
homepage: https://github.com/mikebannister/importable
|
@@ -332,7 +337,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
332
337
|
version: '0'
|
333
338
|
segments:
|
334
339
|
- 0
|
335
|
-
hash:
|
340
|
+
hash: 4261678296264879702
|
336
341
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
337
342
|
none: false
|
338
343
|
requirements:
|
@@ -341,7 +346,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
346
|
version: '0'
|
342
347
|
segments:
|
343
348
|
- 0
|
344
|
-
hash:
|
349
|
+
hash: 4261678296264879702
|
345
350
|
requirements: []
|
346
351
|
rubyforge_project:
|
347
352
|
rubygems_version: 1.8.10
|
@@ -367,11 +372,13 @@ test_files:
|
|
367
372
|
- spec/dummy/app/imports/foo_required_param_mapper.rb
|
368
373
|
- spec/dummy/app/imports/foo_required_param_resource_mapper.rb
|
369
374
|
- spec/dummy/app/imports/foo_resource_mapper.rb
|
375
|
+
- spec/dummy/app/imports/foo_with_relations_mapper.rb
|
370
376
|
- spec/dummy/app/imports/moof_mapper.rb
|
371
377
|
- spec/dummy/app/imports/plural_widgets_mapper.rb
|
372
378
|
- spec/dummy/app/imports/singular_widget_mapper.rb
|
373
379
|
- spec/dummy/app/models/foo.rb
|
374
380
|
- spec/dummy/app/models/foo_importer.rb
|
381
|
+
- spec/dummy/app/models/foo_relation.rb
|
375
382
|
- spec/dummy/app/models/foo_required_field.rb
|
376
383
|
- spec/dummy/app/models/foo_required_param_resource.rb
|
377
384
|
- spec/dummy/app/models/foo_resource.rb
|
@@ -404,8 +411,10 @@ test_files:
|
|
404
411
|
- spec/dummy/db/migrate/20110913175340_create_foo_required_fields.rb
|
405
412
|
- spec/dummy/db/migrate/20110913175348_create_foos.rb
|
406
413
|
- spec/dummy/db/migrate/20110913275348_create_foo_importers.rb
|
414
|
+
- spec/dummy/db/migrate/20110913375348_create_foo_relations.rb
|
407
415
|
- spec/dummy/db/schema.rb
|
408
416
|
- spec/dummy/db/test.sqlite3
|
417
|
+
- spec/dummy/log/development.log
|
409
418
|
- spec/dummy/log/test.log
|
410
419
|
- spec/dummy/public/404.html
|
411
420
|
- spec/dummy/public/422.html
|
@@ -428,6 +437,7 @@ test_files:
|
|
428
437
|
- spec/dummy/tmp/capybara/capybara-201109281703086938696640.html
|
429
438
|
- spec/dummy/tmp/capybara/capybara-201109281704531943698731.html
|
430
439
|
- spec/dummy/tmp/capybara/capybara-201109281705406407095670.html
|
440
|
+
- spec/dummy/tmp/capybara/capybara-201109300007211668347725.html
|
431
441
|
- spec/dummy/tmp/uploads/importable/spreadsheet/file/foo/1/foo_multi_worksheet.xlsx
|
432
442
|
- spec/dummy/tmp/uploads/importable/spreadsheet/file/foo/1/foo_single_worksheet.xlsx
|
433
443
|
- spec/dummy/tmp/uploads/importable/spreadsheet/file/foo_required_field/1/foo_multi_worksheet_required_field_invalid.xlsx
|
@@ -451,5 +461,6 @@ test_files:
|
|
451
461
|
- spec/support/files/foo_required_field_valid.xlsx
|
452
462
|
- spec/support/files/foo_single_worksheet.xls
|
453
463
|
- spec/support/files/foo_single_worksheet.xlsx
|
464
|
+
- spec/support/files/foo_with_relations.xls
|
454
465
|
- spec/support/files/text.txt
|
455
466
|
- spec/support/vcr.rb
|
data/db/development.sqlite3
DELETED
File without changes
|