On Oct 26, 10:58 pm, fairchild <[EMAIL PROTECTED]> wrote:
> Hello,
>   I am trying to use sequel with my spec tests and was trying to make
> each example run within a transaction.  I came up with the following
> code:
>
> # monkey patch Sequel transactions into rspec
> module Spec
>   module Example
>     module ExampleGroupMethods
>
>       def execute_examples(success, instance_variables, examples)
>         return [success, instance_variables] unless success
>         after_all_instance_variables = instance_variables
>         examples.each do |example_group_instance|
>             Merb::Orms::Sequel.connect.transaction do
>               success &=
> example_group_instance.execute(Spec::Runner.options,
> instance_variables)
>               after_all_instance_variables =
> example_group_instance.instance_variable_hash
>               raise Sequel::Error::Rollback #'Rolling Back after rspec
> example'
>             end
>         end
>         return [success, after_all_instance_variables]
>       end
>
>     end
>   end
> end
>
> To confirm that this was working i wrote 2 examples, one to create an
> object and one he next one to try and find it.  IF transactions are
> working the second find should fail, but it doesn't.  Is there
> something else I must do to ensure the rollback occurs?
> Thanks,
> Michael Fairchild

Here's the code I use to run rspec examples inside a transaction, with
changes rolled back at the end:

  class Spec::Example::ExampleGroup
    def execute(*args, &block)
      DB.transaction{super(*args, &block); raise
Sequel::Error::Rollback}
    end
  end

Jeremy
--~--~---------~--~----~------------~-------~--~----~
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