Sha256: 2628f242472b51902a85b56cd7bb8725501742088047e10858a83bd86aea16e6

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

require 'spec_helper'
require 'activerecord-after-transaction/methods'

describe ActiveRecord::AfterTransaction::Methods do
  let(:klass) do
    create_tmp_model foo: :integer do
      include ActiveRecord::AfterTransaction::Methods
    end
  end
  subject { klass.new }

  describe 'in a transaction' do
    it 'executes the proc after transaction' do
      step = 1
      klass.transaction do
        subject.after_transaction do
          step = 2
        end
        subject.save!
        step = 3
      end
      expect(step).to eq 2
    end
    it 'clears executed procs' do
      step = 1
      klass.transaction do
        subject.after_transaction do
          step += 1
        end
        subject.save!
        subject.save!
      end
      expect(step).to eq 2
    end
    it 'does not execute the proc after rollback' do
      step = 1
      klass.transaction do
        subject.after_transaction do
          step = 2
        end
        subject.save!
        raise ActiveRecord::Rollback
      end
      expect(step).to eq 1
    end
  end
  describe 'not in a transaction' do
    it 'executes the proc immediately' do
      step = 1

      subject.after_transaction do
        step = 2
      end
      expect(step).to eq 1
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
activerecord-after-transaction-0.1.1 spec/after_transaction/methods_spec.rb
activerecord-after-transaction-0.1.0 spec/after_transaction/methods_spec.rb
activerecord-after-transaction-0.0.3 spec/after_transaction/methods_spec.rb
activerecord-after-transaction-0.0.2 spec/after_transaction/methods_spec.rb
activerecord-after-transaction-0.0.1 spec/after_transaction/methods_spec.rb