Permalink
Browse files

Added test stuff

  • Loading branch information...
1 parent 110b6ad commit 274f2dca3a4db46ed39591dde3f0c837b85ac37d Bob Van Landuyt committed Oct 1, 2010
View
11 Gemfile
@@ -24,7 +24,16 @@ gem 'mysql'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
-
+group :test do
+ gem "sqlite3-ruby", :require => 'sqlite3'
+ gem 'capybara'
+ gem 'database_cleaner', :git => 'git://github.com/bmabey/database_cleaner.git'
+ gem 'cucumber-rails', "0.3.2" #, :git => 'git://github.com/aslakhellesoy/cucumber-rails.git'
+ gem "factory_girl" #, :git => "git://github.com/thoughtbot/factory_girl_rails.git"
+ gem "test-unit"
+ gem "launchy"
+ gem "pickle"
+end
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
View
@@ -1,3 +1,9 @@
+GIT
+ remote: git://github.com/bmabey/database_cleaner.git
+ revision: 57807b032187fb245cecbd971564062528c40a70
+ specs:
+ database_cleaner (0.6.0.rc.3)
+
GEM
remote: http://rubygems.org/
specs:
@@ -32,17 +38,53 @@ GEM
arel (1.0.1)
activesupport (~> 3.0.0)
builder (2.1.2)
+ capybara (0.3.9)
+ culerity (>= 0.2.4)
+ mime-types (>= 1.16)
+ nokogiri (>= 1.3.3)
+ rack (>= 1.0.0)
+ rack-test (>= 0.5.4)
+ selenium-webdriver (>= 0.0.3)
+ configuration (1.1.0)
+ cucumber (0.9.0)
+ builder (~> 2.1.2)
+ diff-lcs (~> 1.1.2)
+ gherkin (~> 2.2.2)
+ json (~> 1.4.6)
+ term-ansicolor (~> 1.0.5)
+ cucumber-rails (0.3.2)
+ cucumber (>= 0.8.0)
+ culerity (0.2.12)
+ diff-lcs (1.1.2)
erubis (2.6.6)
abstract (>= 1.0.0)
+ factory_girl (1.3.2)
+ ffi (0.6.3)
+ rake (>= 0.8.7)
+ gherkin (2.2.4)
+ json (~> 1.4.6)
+ term-ansicolor (~> 1.0.5)
+ trollop (~> 1.16.2)
i18n (0.4.1)
jquery-rails (0.1.3)
rails (~> 3.0.0)
+ json (1.4.6)
+ json_pure (1.4.6)
+ launchy (0.3.7)
+ configuration (>= 0.0.5)
+ rake (>= 0.8.1)
mail (2.2.6.1)
activesupport (>= 2.3.6)
mime-types
treetop (>= 1.4.5)
mime-types (1.16)
mysql (2.8.1)
+ nokogiri (1.4.3.1)
+ pickle (0.4.2)
+ cucumber (>= 0.8)
+ rake
+ rspec (>= 1.3)
+ yard
polyglot (0.3.1)
rack (1.2.1)
rack-mount (0.6.13)
@@ -63,16 +105,35 @@ GEM
rake (>= 0.8.4)
thor (~> 0.14.0)
rake (0.8.7)
+ rspec (1.3.0)
+ rubyzip (0.9.4)
+ selenium-webdriver (0.0.28)
+ ffi (>= 0.6.1)
+ json_pure
+ rubyzip
+ sqlite3-ruby (1.3.1)
+ term-ansicolor (1.0.5)
+ test-unit (2.1.1)
thor (0.14.2)
treetop (1.4.8)
polyglot (>= 0.3.1)
+ trollop (1.16.2)
tzinfo (0.3.23)
+ yard (0.6.1)
PLATFORMS
ruby
DEPENDENCIES
active_enum
+ capybara
+ cucumber-rails (= 0.3.2)
+ database_cleaner!
+ factory_girl
jquery-rails
+ launchy
mysql
+ pickle
rails (= 3.0.0)
+ sqlite3-ruby
+ test-unit
View
@@ -0,0 +1,8 @@
+<%
+rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
+rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
+std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags ~@wip"
+%>
+default: <%= std_opts %> features
+wip: --tags @wip:3 --wip features
+rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
View
@@ -15,6 +15,9 @@ test:
database: db/test.sqlite3
pool: 5
timeout: 5000
+
+cucumber:
+ <<: *test
production:
adapter: sqlite3
@@ -0,0 +1,100 @@
+# this file generated by script/generate pickle
+
+# create a model
+Given(/^#{capture_model} exists?(?: with #{capture_fields})?$/) do |name, fields|
+ create_model(name, fields)
+end
+
+# create n models
+Given(/^(\d+) #{capture_plural_factory} exist(?: with #{capture_fields})?$/) do |count, plural_factory, fields|
+ count.to_i.times { create_model(plural_factory.singularize, fields) }
+end
+
+# create models from a table
+Given(/^the following #{capture_plural_factory} exists?:?$/) do |plural_factory, table|
+ create_models_from_table(plural_factory, table)
+end
+
+# find a model
+Then(/^#{capture_model} should exist(?: with #{capture_fields})?$/) do |name, fields|
+ find_model!(name, fields)
+end
+
+# not find a model
+Then(/^#{capture_model} should not exist(?: with #{capture_fields})?$/) do |name, fields|
+ find_model(name, fields).should be_nil
+end
+
+# find models with a table
+Then(/^the following #{capture_plural_factory} should exists?:?$/) do |plural_factory, table|
+ find_models_from_table(plural_factory, table).should_not be_any(&:nil?)
+end
+
+# find exactly n models
+Then(/^(\d+) #{capture_plural_factory} should exist(?: with #{capture_fields})?$/) do |count, plural_factory, fields|
+ find_models(plural_factory.singularize, fields).size.should == count.to_i
+end
+
+# assert equality of models
+Then(/^#{capture_model} should be #{capture_model}$/) do |a, b|
+ model!(a).should == model!(b)
+end
+
+# assert model is in another model's has_many assoc
+Then(/^#{capture_model} should be (?:in|one of|amongst) #{capture_model}(?:'s)? (\w+)$/) do |target, owner, association|
+ model!(owner).send(association).should include(model!(target))
+end
+
+# assert model is not in another model's has_many assoc
+Then(/^#{capture_model} should not be (?:in|one of|amongst) #{capture_model}(?:'s)? (\w+)$/) do |target, owner, association|
+ model!(owner).send(association).should_not include(model!(target))
+end
+
+# assert model is another model's has_one/belongs_to assoc
+Then(/^#{capture_model} should be #{capture_model}(?:'s)? (\w+)$/) do |target, owner, association|
+ model!(owner).send(association).should == model!(target)
+end
+
+# assert model is not another model's has_one/belongs_to assoc
+Then(/^#{capture_model} should not be #{capture_model}(?:'s)? (\w+)$/) do |target, owner, association|
+ model!(owner).send(association).should_not == model!(target)
+end
+
+# assert model.predicate?
+Then(/^#{capture_model} should (?:be|have) (?:an? )?#{capture_predicate}$/) do |name, predicate|
+ if model!(name).respond_to?("has_#{predicate.gsub(' ', '_')}")
+ model!(name).should send("have_#{predicate.gsub(' ', '_')}")
+ else
+ model!(name).should send("be_#{predicate.gsub(' ', '_')}")
+ end
+end
+
+# assert not model.predicate?
+Then(/^#{capture_model} should not (?:be|have) (?:an? )?#{capture_predicate}$/) do |name, predicate|
+ if model!(name).respond_to?("has_#{predicate.gsub(' ', '_')}")
+ model!(name).should_not send("have_#{predicate.gsub(' ', '_')}")
+ else
+ model!(name).should_not send("be_#{predicate.gsub(' ', '_')}")
+ end
+end
+
+# model.attribute.should eql(value)
+# model.attribute.should_not eql(value)
+Then(/^#{capture_model}'s (\w+) (should(?: not)?) be #{capture_value}$/) do |name, attribute, expectation, expected|
+ actual_value = model(name).send(attribute)
+ expectation = expectation.gsub(' ', '_')
+
+ case expected
+ when 'nil', 'true', 'false'
+ actual_value.send(expectation, send("be_#{expected}"))
+ when /^[+-]?[0-9_]+(\.\d+)?$/
+ actual_value.send(expectation, eql(expected.to_f))
+ else
+ actual_value.to_s.send(expectation, eql(eval(expected)))
+ end
+end
+
+# assert size of association
+Then /^#{capture_model} should have (\d+) (\w+)$/ do |name, size, association|
+ model!(name).send(association).size.should == size.to_i
+end
Oops, something went wrong.

0 comments on commit 274f2dc

Please sign in to comment.