Sha256: e8d7578c8a4a503dd356d3c598fa0897978662bd7e404b67b472fb66fd8f9f93

Contents?: true

Size: 1.57 KB

Versions: 8

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

def should_support_on_duplicate_key_ignore
  describe "#import" do
    extend ActiveSupport::TestCase::ImportAssertions
    let(:topic) { Topic.create!(title: "Book", author_name: "John Doe") }
    let(:topics) { [topic] }

    context "with :on_duplicate_key_ignore" do
      it "should skip duplicates and continue import" do
        topics << Topic.new(title: "Book 2", author_name: "Jane Doe")
        assert_difference "Topic.count", +1 do
          result = Topic.import topics, on_duplicate_key_ignore: true, validate: false
          assert_not_equal topics.first.id, result.ids.first
          assert_nil topics.last.id
        end
      end

      unless ENV["SKIP_COMPOSITE_PK"]
        context "with composite primary keys" do
          it "should import array of values successfully" do
            columns = [:tag_id, :publisher_id, :tag]
            values = [[1, 1, 'Mystery'], [1, 1, 'Science']]

            assert_difference "Tag.count", +1 do
              Tag.import columns, values, on_duplicate_key_ignore: true, validate: false
            end
            assert_equal 'Mystery', Tag.first.tag
          end
        end
      end
    end

    context "with :ignore" do
      it "should skip duplicates and continue import" do
        topics << Topic.new(title: "Book 2", author_name: "Jane Doe")
        assert_difference "Topic.count", +1 do
          result = Topic.import topics, ignore: true, validate: false
          assert_not_equal topics.first.id, result.ids.first
          assert_nil topics.last.id
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
activerecord-import-2.1.0 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-2.0.0 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-1.8.1 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-1.8.0 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-1.6.0 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-1.5.1 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-1.5.0 test/support/shared_examples/on_duplicate_key_ignore.rb
activerecord-import-1.4.1 test/support/shared_examples/on_duplicate_key_ignore.rb