Make after_commit callbacks fire in tests for Rails 3+ with transactional_fixtures = true.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
gemfiles fixes Nov 16, 2015
lib v1.1.0 Jun 20, 2016
spec whitespaces Jun 20, 2016
.travis.yml fix tests Feb 27, 2016
Gemfile kill appraisl Jul 4, 2014
Gemfile.lock v1.1.0 Jun 20, 2016
MIT-LICENSE rename to mit Sep 11, 2014
Rakefile kill appraisl Jul 4, 2014
Readme.md thx for the patch nicksieger Jun 20, 2016
test_after_commit.gemspec Update gemspec Jul 23, 2016

Readme.md

Make after_commit callbacks fire in tests for Rails 3+ with transactional_fixtures = true.

Deprecation this is no longer needed on rails 5.0+ https://github.com/rails/rails/pull/18458

Install

gem install test_after_commit

# Gemfile (never include in :development !)
gem 'test_after_commit', :group => :test

Usage

Test that the methods get called or the side-effect of the methods, something like:

class Car < ActiveRecord::Base
  after_commit :foo, :on => :update

  def foo
    $foo = 1
  end
end

...

it "sets $foo on commit" do
  $foo.should == nil
  car.save!
  $foo.should == 1
end

Temporary disable after commit hooks

In your test_helper, you can specify the default

TestAfterCommit.enabled = true

Then use blocks in your tests to change the behavior:

TestAfterCommit.with_commits(true) do
  my_tests
end

TestAfterCommit.with_commits(false) do
  my_tests
end

TIPS

Author

Inspired by https://gist.github.com/1305285

Contributors

Michael Grosser
michael@grosser.it
License: MIT
Build Status