Move into MiniSQLMultisiteConnection, and add test for rollback

This commit is contained in:
David Taylor
2018-07-24 09:41:55 +01:00
parent d7b5a374c2
commit 20a21b1240
5 changed files with 74 additions and 71 deletions

View File

@ -0,0 +1,52 @@
require 'rails_helper'
describe MiniSqlMultisiteConnection do
describe "after_commit" do
it "runs callbacks after outermost transaction is committed" do
outputString = "1"
# Main transaction
ActiveRecord::Base.transaction do
outputString += "2"
# Nested transaction
ActiveRecord::Base.transaction do
outputString += "3"
DB.after_commit do
outputString += "6"
end
outputString += "4"
end
DB.after_commit do
outputString += "7"
end
outputString += "5"
end
expect(outputString).to eq("1234567")
end
it "does not run if the transaction is rolled back" do
outputString = "1"
ActiveRecord::Base.transaction do
outputString += "2"
DB.after_commit do
outputString += "4"
end
outputString += "3"
raise ActiveRecord::Rollback
end
expect(outputString).to eq("123")
end
end
end