Sha256: ace94460229fcfe5bb4588187cee61aad20e5168af0c7d134be077426be6c7e5

Contents?: true

Size: 1.79 KB

Versions: 3

Compression:

Stored size: 1.79 KB

Contents

require File.expand_path('../spec_helper', __FILE__)

describe ActiveRecord::Duplicate do
  let(:klass) { Class.new(ActiveRecord::Base) { self.table_name = 'records' } }


  it 'runs callbacks' do
    mock = MiniTest::Mock.new
    
    klass.instance_eval do
      before_duplication { mock.before_duplication(duplication_context) }
      after_duplication { mock.after_duplication(duplication_context) }
    end
    
    mock.expect(:before_duplication, nil, [:original])
    mock.expect(:after_duplication, nil, [:original])
    mock.expect(:before_duplication, nil, [:duplicate])
    mock.expect(:after_duplication, nil, [:duplicate])
    
    klass.create.duplicate
    mock.verify
  end


  it 'runs callbacks on the original object' do
    mock = MiniTest::Mock.new
    
    klass.instance_eval do
      before_duplication(on: :original) { mock.before_duplication(duplication_context) }
      after_duplication(on: :original) { mock.after_duplication(duplication_context) }
    end
    
    mock.expect(:before_duplication, nil, [:original])
    mock.expect(:after_duplication, nil, [:original])
    
    klass.create.duplicate
    mock.verify
  end


  it 'runs callbacks on the duplicated object' do
    mock = MiniTest::Mock.new
    
    klass.instance_eval do
      before_duplication(on: :duplicate) { mock.before_duplication(duplication_context) }
      after_duplication(on: :duplicate) { mock.after_duplication(duplication_context) }
    end
    
    mock.expect(:before_duplication, nil, [:duplicate])
    mock.expect(:after_duplication, nil, [:duplicate])
    
    klass.create.duplicate
    mock.verify
  end


  it 'wont duplicate records if callbacks return false' do
    klass.instance_eval do
      before_duplication(on: :original) { false }
    end
    
    klass.create.duplicate.must_equal(false)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activerecord-duplicate-0.6.1 spec/callbacks_spec.rb
activerecord-duplicate-0.6.0 spec/callbacks_spec.rb
activerecord-duplicate-0.5.1 spec/callbacks_spec.rb