Em 24-04-2012 17:35, Jeremy Evans escreveu:
...
conn = DB.pool.acquire(Thread.current)
DB.send(:add_transaction, conn, {})
DB.send(:begin_transaction, conn, {})
DB.transaction(:savepoint=>true){}
DB.send(:begin_transaction, conn, :savepoint=>true)
DB.send(:rollback_transaction, conn, :savepoint=>true)
DB.send(:remove_transaction, conn, false)
DB.send(:begin_transaction, conn, :savepoint=>true)
DB.send(:begin_transaction, conn, :savepoint=>true)
DB.transaction(:savepoint=>true, :rollback=>:always){}
DB.send(:rollback_transaction, conn, :savepoint=>true)
DB.send(:remove_transaction, conn, false)
DB.send(:rollback_transaction, conn, :savepoint=>true)
DB.send(:remove_transaction, conn, false)
DB.send(:rollback_transaction, conn, {})
DB.send(:remove_transaction, conn, false)
DB.pool.send(:sync){DB.pool.send(:release, Thread.current)}
Thanks, that seems to be working for me. I'd probably need to think in
better names but this is what I'm using for now:
spec/support/helpers.rb
module Helpers
def add_user_to_editors(user)
editor_id = user.send(:editor_id)
DB[:jsec_user_role_rel].insert(user_id: user.id, role_id: editor_id)
end
...
end
module RSpec::Core::DSL
def run_all_in_transaction
before(:all) do
@conn = DB.pool.send :acquire, Thread.current
DB.send(:add_transaction, @conn, {})
DB.send(:begin_transaction, @conn, savepoint: true)
end
after(:all) do
DB.send(:rollback_transaction, @conn, savepoint: true)
DB.send(:remove_transaction, @conn, false)
DB.pool.send(:sync){DB.pool.send(:release, Thread.current)}
end
end
end
spec_helper.rb:
config.around(:each) do |example|
DB.transaction(savepoint: true, rollback: :always) do
example.run
end
end
In my spec:
context "logged in as an editor" do
run_all_in_transaction
before(:all) { add_user_to_editors(@user =
FactoryGirl.create(:user)) }
before(:each) { sign_in @user }
it "creates fields" {...}
it "updates fields" {...}
end
This is working pretty good for me :)
Thank you for your support!
Have a good weekend :)
Cheers,
Rodrigo.
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sequel-talk?hl=en.