Skip to content

Commit

Permalink
Added Cucumber/Webrat
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe Ferris committed Jul 7, 2009
1 parent d474a52 commit 9d41a31
Show file tree
Hide file tree
Showing 612 changed files with 40,299 additions and 1 deletion.
3 changes: 3 additions & 0 deletions Rakefile
Expand Up @@ -8,3 +8,6 @@ require 'rake/testtask'
require 'rake/rdoctask'

require 'tasks/rails'

desc "Run all tests and features"
task :default => [:test, :features]
5 changes: 4 additions & 1 deletion config/database.yml
Expand Up @@ -8,7 +8,7 @@ development:
host: localhost
encoding: utf8

test:
test: &TEST
adapter: mysql
database: CHANGEME_test
username: root
Expand All @@ -33,3 +33,6 @@ production:
host: localhost
encoding: utf8
socket: /var/lib/mysql/mysql.sock

cucumber:
<<: *TEST
43 changes: 43 additions & 0 deletions config/environments/cucumber.rb
@@ -0,0 +1,43 @@
config.cache_classes = true # This must be true for Cucumber to operate correctly!

# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true

# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false

# Disable request forgery protection in test environment
config.action_controller.allow_forgery_protection = false

# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test

# Cucumber and dependencies
config.gem 'polyglot',
:version => '0.2.6',
:lib => false
config.gem 'treetop',
:version => '1.2.6',
:lib => false
config.gem 'term-ansicolor',
:version => '1.0.3',
:lib => false
config.gem 'diff-lcs',
:version => '1.1.2',
:lib => false
config.gem 'builder',
:version => '2.1.2',
:lib => false
config.gem 'cucumber',
:version => '0.3.11'

# Webrat and dependencies
# NOTE: don't vendor nokogiri - it's a binary Gem
config.gem 'nokogiri',
:version => '1.3.2',
:lib => false
config.gem 'webrat',
:version => '0.4.4'
8 changes: 8 additions & 0 deletions config/environments/test.rb
Expand Up @@ -34,6 +34,14 @@
:source => 'http://gems.github.com',
:version => '>= 2.10.1'

# Webrat and dependencies
# NOTE: don't vendor nokogiri - it's a binary Gem
config.gem 'nokogiri',
:version => '1.3.2',
:lib => false
config.gem 'webrat',
:version => '0.4.4'

HOST = 'localhost'

require 'factory_girl'
Expand Down
119 changes: 119 additions & 0 deletions features/step_definitions/webrat_steps.rb
@@ -0,0 +1,119 @@
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))

# Commonly used webrat steps
# http://github.com/brynary/webrat

Given /^I am on (.+)$/ do |page_name|
visit path_to(page_name)
end

When /^I go to (.+)$/ do |page_name|
visit path_to(page_name)
end

When /^I press "([^\"]*)"$/ do |button|
click_button(button)
end

When /^I follow "([^\"]*)"$/ do |link|
click_link(link)
end

When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
fill_in(field, :with => value)
end

When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field|
select(value, :from => field)
end

# Use this step in conjunction with Rail's datetime_select helper. For example:
# When I select "December 25, 2008 10:00" as the date and time
When /^I select "([^\"]*)" as the date and time$/ do |time|
select_datetime(time)
end

# Use this step when using multiple datetime_select helpers on a page or
# you want to specify which datetime to select. Given the following view:
# <%= f.label :preferred %><br />
# <%= f.datetime_select :preferred %>
# <%= f.label :alternative %><br />
# <%= f.datetime_select :alternative %>
# The following steps would fill out the form:
# When I select "November 23, 2004 11:20" as the "Preferred" date and time
# And I select "November 25, 2004 10:30" as the "Alternative" date and time
When /^I select "([^\"]*)" as the "([^\"]*)" date and time$/ do |datetime, datetime_label|
select_datetime(datetime, :from => datetime_label)
end

# Use this step in conjunction with Rail's time_select helper. For example:
# When I select "2:20PM" as the time
# Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
# will convert the 2:20PM to 14:20 and then select it.
When /^I select "([^\"]*)" as the time$/ do |time|
select_time(time)
end

# Use this step when using multiple time_select helpers on a page or you want to
# specify the name of the time on the form. For example:
# When I select "7:30AM" as the "Gym" time
When /^I select "([^\"]*)" as the "([^\"]*)" time$/ do |time, time_label|
select_time(time, :from => time_label)
end

# Use this step in conjunction with Rail's date_select helper. For example:
# When I select "February 20, 1981" as the date
When /^I select "([^\"]*)" as the date$/ do |date|
select_date(date)
end

# Use this step when using multiple date_select helpers on one page or
# you want to specify the name of the date on the form. For example:
# When I select "April 26, 1982" as the "Date of Birth" date
When /^I select "([^\"]*)" as the "([^\"]*)" date$/ do |date, date_label|
select_date(date, :from => date_label)
end

When /^I check "([^\"]*)"$/ do |field|
check(field)
end

When /^I uncheck "([^\"]*)"$/ do |field|
uncheck(field)
end

When /^I choose "([^\"]*)"$/ do |field|
choose(field)
end

When /^I attach the file at "([^\"]*)" to "([^\"]*)"$/ do |path, field|
attach_file(field, path)
end

Then /^I should see "([^\"]*)"$/ do |text|
assert_contain text
end

Then /^I should not see "([^\"]*)"$/ do |text|
assert_not_contain text
end

Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value|
assert_match /#{value}/, field_labeled(field).value
end

Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value|
assert_no_match /#{value}/, field_labeled(field).value
end

Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
assert field_labeled(label).checked?
end

Then /^the "([^\"]*)" checkbox should not be checked$/ do |label|
assert ! field_labeled(label).checked?
end

Then /^I should be on (.+)$/ do |page_name|
assert_equal path_to(page_name), URI.parse(current_url).path
end
24 changes: 24 additions & 0 deletions features/support/env.rb
@@ -0,0 +1,24 @@
# Sets up the Rails environment for Cucumber
ENV["RAILS_ENV"] ||= "cucumber"
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
require 'cucumber/rails/world'

# Comment out the next line if you don't want Cucumber Unicode support
require 'cucumber/formatter/unicode'

# Comment out the next line if you don't want transactions to
# open/roll back around each scenario
Cucumber::Rails.use_transactional_fixtures

# Comment out the next line if you want Rails' own error handling
# (e.g. rescue_action_in_public / rescue_responses / rescue_from)
Cucumber::Rails.bypass_rescue

require 'webrat'

Webrat.configure do |config|
config.mode = :rails
end

# require 'cucumber/rails/rspec'
require 'webrat/core/matchers'
27 changes: 27 additions & 0 deletions features/support/paths.rb
@@ -0,0 +1,27 @@
module NavigationHelpers
# Maps a name to a path. Used by the
#
# When /^I go to (.+)$/ do |page_name|
#
# step definition in webrat_steps.rb
#
def path_to(page_name)
case page_name

when /the homepage/
'/'

# Add more mappings here.
# Here is a more fancy example:
#
# when /^(.*)'s profile page$/i
# user_profile_path(User.find_by_login($1))

else
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end

World(NavigationHelpers)
16 changes: 16 additions & 0 deletions lib/tasks/cucumber.rake
@@ -0,0 +1,16 @@
$LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib')

begin
require 'cucumber/rake/task'

Cucumber::Rake::Task.new(:features) do |t|
t.fork = true
t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
end
task :features => 'db:test:prepare'
rescue LoadError
desc 'Cucumber rake task not available'
task :features do
abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
end
end
8 changes: 8 additions & 0 deletions script/cucumber
@@ -0,0 +1,8 @@
#!/usr/bin/env ruby
begin
load File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/cucumber/bin/cucumber")
rescue LoadError => e
raise unless e.to_s =~ /cucumber/
require "rubygems"
load File.join(Gem.bindir, "cucumber")
end
85 changes: 85 additions & 0 deletions vendor/gems/builder-2.1.2/.specification
@@ -0,0 +1,85 @@
--- !ruby/object:Gem::Specification
name: builder
version: !ruby/object:Gem::Version
version: 2.1.2
platform: ruby
authors:
- Jim Weirich
autorequire: builder
bindir: bin
cert_chain:
date: 2007-06-15 00:00:00 -04:00
default_executable:
dependencies: []

description: "Builder provides a number of builder objects that make creating structured data simple to do. Currently the following builder objects are supported: * XML Markup * XML Events"
email: jim@weirichhouse.org
executables: []

extensions: []

extra_rdoc_files:
- CHANGES
- Rakefile
- README
- doc/releases/builder-1.2.4.rdoc
- doc/releases/builder-2.0.0.rdoc
- doc/releases/builder-2.1.1.rdoc
files:
- lib/blankslate.rb
- lib/builder.rb
- lib/builder/blankslate.rb
- lib/builder/xchar.rb
- lib/builder/xmlbase.rb
- lib/builder/xmlevents.rb
- lib/builder/xmlmarkup.rb
- test/performance.rb
- test/preload.rb
- test/test_xchar.rb
- test/testblankslate.rb
- test/testeventbuilder.rb
- test/testmarkupbuilder.rb
- scripts/publish.rb
- CHANGES
- Rakefile
- README
- doc/releases/builder-1.2.4.rdoc
- doc/releases/builder-2.0.0.rdoc
- doc/releases/builder-2.1.1.rdoc
has_rdoc: true
homepage: http://onestepback.org
licenses: []

post_install_message:
rdoc_options:
- --title
- Builder -- Easy XML Building
- --main
- README
- --line-numbers
require_paths:
- lib
required_ruby_version: !ruby/object:Gem::Requirement
requirements:
- - ">"
- !ruby/object:Gem::Version
version: 0.0.0
version:
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: "0"
version:
requirements: []

rubyforge_project:
rubygems_version: 1.3.4
signing_key:
specification_version: 1
summary: Builders for MarkUp.
test_files:
- test/test_xchar.rb
- test/testblankslate.rb
- test/testeventbuilder.rb
- test/testmarkupbuilder.rb

0 comments on commit 9d41a31

Please sign in to comment.