mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 01:14:12 +08:00
Move into MiniSQLMultisiteConnection, and add test for rollback
This commit is contained in:
52
spec/lib/mini_sql_multisite_connection_spec.rb
Normal file
52
spec/lib/mini_sql_multisite_connection_spec.rb
Normal 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
|
Reference in New Issue
Block a user