From c72ba10964c70b84403803a3994849109a08953f Mon Sep 17 00:00:00 2001 From: David Leal Date: Sat, 25 Oct 2008 19:18:38 +0100 Subject: [PATCH] Make transactional fixtures optional. --- .../cucumber/templates/features/env.rb | 3 ++ lib/merb_cucumber/helpers/activerecord.rb | 10 +++--- lib/merb_cucumber/helpers/datamapper.rb | 32 +++++++++---------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/lib/generators/cucumber/templates/features/env.rb b/lib/generators/cucumber/templates/features/env.rb index 461f3bb..9186a2c 100644 --- a/lib/generators/cucumber/templates/features/env.rb +++ b/lib/generators/cucumber/templates/features/env.rb @@ -16,5 +16,8 @@ require "merb_cucumber/helpers/activerecord" <% end -%> +# Uncomment if you want transactional fixtures +# Merb::Test::World::Base.use_transactional_fixtures + Merb.start_environment(:testing => true, :adapter => 'runner', :environment => ENV['MERB_ENV'] || 'test') diff --git a/lib/merb_cucumber/helpers/activerecord.rb b/lib/merb_cucumber/helpers/activerecord.rb index 7bc8dee..bacec26 100644 --- a/lib/merb_cucumber/helpers/activerecord.rb +++ b/lib/merb_cucumber/helpers/activerecord.rb @@ -4,9 +4,8 @@ module Merb module Test module Helpers module ActiveRecord - - def self.included(base) - + module ClassMethods + def use_transactional_fixtures # Let's set a transaction on the ActiveRecord connection when starting a new scenario $main.Before do if ActiveRecord::Base.connection.respond_to?(:increment_open_transactions) @@ -26,15 +25,14 @@ def self.included(base) ActiveRecord::Base.send :decrement_open_transactions end end - + end end - end end module World module Base - include Helpers::ActiveRecord + extend Helpers::ActiveRecord::ClassMethods end end end diff --git a/lib/merb_cucumber/helpers/datamapper.rb b/lib/merb_cucumber/helpers/datamapper.rb index 8d381a8..4e43cb4 100644 --- a/lib/merb_cucumber/helpers/datamapper.rb +++ b/lib/merb_cucumber/helpers/datamapper.rb @@ -4,34 +4,32 @@ module Merb module Test module Helpers module DataMapper - - def self.included(base) - - $main.Before do - repository(:default) do - transaction = ::DataMapper::Transaction.new(repository) - transaction.begin - repository.adapter.push_transaction(transaction) + module ClassMethods + def use_transactional_fixtures + $main.Before do + repository(:default) do + transaction = ::DataMapper::Transaction.new(repository) + transaction.begin + repository.adapter.push_transaction(transaction) + end end - end - $main.After do - repository(:default) do - while repository.adapter.current_transaction - repository.adapter.current_transaction.rollback - repository.adapter.pop_transaction + $main.After do + repository(:default) do + while repository.adapter.current_transaction + repository.adapter.current_transaction.rollback + repository.adapter.pop_transaction + end end end end - end - end end module World module Base - include Helpers::DataMapper + extend Helpers::DataMapper::ClassMethods end end end