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.

Reply via email to