importer 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +10 -14
- data/Rakefile +6 -8
- data/VERSION +1 -1
- data/importer.gemspec +26 -39
- data/lib/importer.rb +11 -70
- data/lib/importer/adapters/active_record_adapter.rb +102 -0
- data/lib/importer/adapters/mongo_mapper_adapter.rb +104 -0
- data/lib/importer/import.rb +39 -1
- data/lib/importer/imported_object.rb +29 -2
- data/lib/importer/parser/base.rb +4 -0
- data/lib/importer/parser/csv.rb +2 -2
- data/lib/importer/parser/xml.rb +2 -2
- data/test/factories.rb +0 -9
- data/test/helper.rb +14 -48
- data/test/importer/adapters/active_record_adapter_test.rb +114 -0
- data/test/importer/adapters/mongo_mapper_adapter_test.rb +115 -0
- data/test/importer/import_test.rb +45 -0
- data/test/importer/imported_object_test.rb +18 -0
- metadata +20 -47
- data/lib/importer/import/active_record.rb +0 -41
- data/lib/importer/import/simple.rb +0 -61
- data/lib/importer/imported_object/active_record.rb +0 -41
- data/lib/importer/imported_object/simple.rb +0 -25
- data/rails_generators/importer/importer_generator.rb +0 -18
- data/rails_generators/importer/templates/imported_objects_migration.rb +0 -19
- data/rails_generators/importer/templates/imports_migration.rb +0 -17
- data/test/importer/import/active_record_test.rb +0 -36
- data/test/importer/import/simple_test.rb +0 -36
- data/test/importer/imported_object/active_record_test.rb +0 -37
- data/test/importer/imported_object/simple_test.rb +0 -35
- data/test/importer_test.rb +0 -50
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class Importer::ImportedObject::ActiveRecordTest < Test::Unit::TestCase
|
4
|
-
context "given an import" do
|
5
|
-
setup { @import = Factory(:active_record_import) }
|
6
|
-
|
7
|
-
context "creating a new imported object" do
|
8
|
-
setup { Factory(:active_record_imported_object, :import => @import, :state => "new_object") }
|
9
|
-
|
10
|
-
should_change("import's new_objects_count", :by => 1) { @import.reload.new_objects_count }
|
11
|
-
end
|
12
|
-
|
13
|
-
context "with an imported object" do
|
14
|
-
setup { @imported_object = Factory(:active_record_imported_object, :import => @import, :state => "new_object") }
|
15
|
-
|
16
|
-
context "destroying the imported object" do
|
17
|
-
setup { @imported_object.destroy }
|
18
|
-
|
19
|
-
should_change("import's new_objects_count", :by => -1) { @import.reload.new_objects_count }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "creating new imported object" do
|
25
|
-
setup { @imported_object = Factory(:active_record_imported_object, :data => { "a" => "b" }, :validation_errors => { "c" => "d" }) }
|
26
|
-
|
27
|
-
should "serialize it's data" do
|
28
|
-
data = { "a" => "b" }
|
29
|
-
assert_equal data, @imported_object.data
|
30
|
-
end
|
31
|
-
|
32
|
-
should "serialize it's validation errors" do
|
33
|
-
validation_errors = { "c" => "d" }
|
34
|
-
assert_equal validation_errors, @imported_object.validation_errors
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class Importer::ImportedObject::SimpleTest < Test::Unit::TestCase
|
4
|
-
context "given an import" do
|
5
|
-
setup { @import = Factory(:simple_import) }
|
6
|
-
|
7
|
-
context "creating a new imported object" do
|
8
|
-
setup do
|
9
|
-
imported_object = Importer::ImportedObject::Simple.new(:import => @import)
|
10
|
-
imported_object.state = "new_object"
|
11
|
-
imported_object.save
|
12
|
-
end
|
13
|
-
|
14
|
-
should_change("import's new_objects_count", :by => 1) { @import.new_objects_count }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "creating new imported object" do
|
18
|
-
setup do
|
19
|
-
@imported_object = Importer::ImportedObject::Simple.new(:import => @import)
|
20
|
-
@imported_object.data = { "a" => "b" }
|
21
|
-
@imported_object.validation_errors = { "c" => "d" }
|
22
|
-
end
|
23
|
-
|
24
|
-
should "correctly set/get data" do
|
25
|
-
data = { "a" => "b" }
|
26
|
-
assert_equal data, @imported_object.data
|
27
|
-
end
|
28
|
-
|
29
|
-
should "correctly set/get validation errors" do
|
30
|
-
validation_errors = { "c" => "d" }
|
31
|
-
assert_equal validation_errors, @imported_object.validation_errors
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/test/importer_test.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class ImporterTest < Test::Unit::TestCase
|
4
|
-
context "" do
|
5
|
-
setup do
|
6
|
-
@product = Factory(:product, :customid => "1", :name => "A pink ball", :description => "Round glass ball.", :price => 86)
|
7
|
-
@import = Importer::Import::ActiveRecord.create
|
8
|
-
end
|
9
|
-
|
10
|
-
context "importing from an XML file" do
|
11
|
-
setup do
|
12
|
-
Product.import(fixture_file("products.xml"), :import => @import)
|
13
|
-
end
|
14
|
-
|
15
|
-
should_change("product's name", :from => "A pink ball", :to => "A black ball") { @product.reload.name }
|
16
|
-
|
17
|
-
should_change("products count", :by => 1) { Product.count }
|
18
|
-
should "correctly create new product" do
|
19
|
-
product = Product.last
|
20
|
-
|
21
|
-
assert_equal "A red hat", product.name
|
22
|
-
assert_equal "Party hat.", product.description
|
23
|
-
assert_equal 114, product.price
|
24
|
-
assert_equal "2", product.customid
|
25
|
-
end
|
26
|
-
|
27
|
-
should_change("imported objects counts", :by => 3) { Importer::ImportedObject::ActiveRecord.count }
|
28
|
-
|
29
|
-
should_change("import's workflow state", :to => "finished") { @import.reload.workflow_state }
|
30
|
-
end
|
31
|
-
|
32
|
-
context "when there is exception raised while importing from an XML file" do
|
33
|
-
setup do
|
34
|
-
begin
|
35
|
-
InvalidProduct.import(fixture_file("products.xml"), :import => @import)
|
36
|
-
rescue ::Exception => e
|
37
|
-
@exception = e
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
should_not_change("product's name") { @product.reload.name }
|
42
|
-
should_not_change("products count") { InvalidProduct.count }
|
43
|
-
should_not_change("imported objects count") { Importer::ImportedObject::ActiveRecord.count }
|
44
|
-
should_not_change("import's workflow state") { @import.reload.workflow_state }
|
45
|
-
should "propagate exception" do
|
46
|
-
assert_equal "An error occured.", @exception.message
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|