repair features and support to all pass for cleaning single orms/dbs, so legacy works, theres also some preperation for other modes

This commit is contained in:
Jon Rowe 2010-05-16 21:44:09 +01:00
parent 27a11f1d83
commit 688b720591
4 changed files with 49 additions and 26 deletions

View file

@ -4,13 +4,4 @@ end
Then /^I should see 1 widget$/ do
Widget.count.should == 1
end
When /^I create a sneaky widget$/ do
SneakyWidget.create!
end
Then /^I should see 1 sneaky widget$/ do
SneakyWidget.count.should == 1
end
end

View file

@ -10,7 +10,7 @@ if orm && strategy
begin
require "#{File.dirname(__FILE__)}/../../lib/#{orm}_models"
rescue LoadError
rescue LoadError => e
raise "You don't have the #{orm} ORM installed"
end

View file

@ -1,25 +1,31 @@
Given /^I am using (ActiveRecord|DataMapper|MongoMapper|CouchPotato)$/ do |orm|
@orm = orm
@feature_runner = FeatureRunner.new
@feature_runner.orm = orm
end
Given /^I am using (ActiveRecord|DataMapper|MongoMapper|CouchPotato) and (ActiveRecord|DataMapper|MongoMapper|CouchPotato)$/ do |orm1,orm2|
@feature_runner = FeatureRunner.new
@feature_runner.orm = orm1
@feature_runner.another_orm = orm2
end
Given /^the (.+) cleaning strategy$/ do |strategy|
@strategy = strategy
@feature_runner.strategy = strategy
end
When "I run my scenarios that rely on a clean database" do
full_dir ||= File.expand_path(File.dirname(__FILE__) + "/../../examples/")
Dir.chdir(full_dir) do
ENV['ORM'] = @orm.downcase
ENV['STRATEGY'] = @strategy
@out = `#{"jruby -S " if defined?(JRUBY_VERSION)}cucumber features`
@status = $?.exitstatus
end
@feature_runner.go 'example'
end
When "I run my scenarios that rely on clean databases using multiple orms" do
@feature_runner.go 'example_multiple_orms'
end
When "I run my scenarios that rely on clean databases using multiple orms" do
@feature_runner.go 'example_multiple_orms'
end
Then "I should see all green" do
unless @status == 0
raise "Expected to see all green but we saw FAIL! Output:\n#{@out}"
end
end
fail "Feature failed with :#{@feature_runner.output}" unless @feature_runner.exit_status == 0
end

View file

@ -0,0 +1,26 @@
class FeatureRunner
attr_accessor :orm
attr_accessor :another_orm
attr_accessor :strategy
attr_accessor :exit_status
attr_accessor :output
def strategy
@strategy || 'truncation'
end
def go feature
full_dir ||= File.expand_path(File.dirname(__FILE__) + "/../../examples/")
Dir.chdir(full_dir) do
ENV['ORM'] = orm.downcase
ENV['ANOTHER_ORM'] = another_orm.downcase if another_orm
ENV['STRATEGY'] = strategy
self.output = `#{"jruby -S " if defined?(JRUBY_VERSION)}cucumber features/#{feature}.feature`
self.exit_status = $?.exitstatus
end
end
end