importer 0.3.2 → 0.4.0
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/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
         |