Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Adding in all the spec goodness
- Loading branch information
Showing
12 changed files
with
427 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
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" data and time | ||
# And I select "November 25, 2004 10:30" as the "Alternative" data 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| | ||
response.should contain(text) | ||
end | ||
|
||
Then /^I should not see "([^\"]*)"$/ do |text| | ||
response.should_not contain(text) | ||
end | ||
|
||
Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value| | ||
field_labeled(field).value.should =~ /#{value}/ | ||
end | ||
|
||
Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value| | ||
field_labeled(field).value.should_not =~ /#{value}/ | ||
end | ||
|
||
Then /^the "([^\"]*)" checkbox should be checked$/ do |label| | ||
field_labeled(label).should be_checked | ||
end | ||
|
||
Then /^I should be on (.+)$/ do |page_name| | ||
URI.parse(current_url).path.should == path_to(page_name) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Sets up the Rails environment for Cucumber | ||
ENV["RAILS_ENV"] ||= "test" | ||
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') | ||
require 'cucumber/rails/world' | ||
require 'cucumber/formatter/unicode' # Comment out this line if you don't want Cucumber Unicode support | ||
Cucumber::Rails.use_transactional_fixtures | ||
Cucumber::Rails.bypass_rescue # Comment out this line if you want Rails own error handling | ||
# (e.g. rescue_action_in_public / rescue_responses / rescue_from) | ||
|
||
require 'webrat' | ||
|
||
Webrat.configure do |config| | ||
config.mode = :rails | ||
end | ||
|
||
require 'cucumber/rails/rspec' | ||
require 'webrat/core/matchers' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
module NavigationHelpers | ||
# Maps a static name to a static route. | ||
# | ||
# This method is *not* designed to map from a dynamic name to a | ||
# dynamic route like <tt>post_comments_path(post)</tt>. For dynamic | ||
# routes like this you should *not* rely on #path_to, but write | ||
# your own step definitions instead. Example: | ||
# | ||
# Given /I am on the comments page for the "(.+)" post/ |name| | ||
# post = Post.find_by_name(name) | ||
# visit post_comments_path(post) | ||
# end | ||
# | ||
def path_to(page_name) | ||
case page_name | ||
|
||
when /the homepage/ | ||
root_path | ||
|
||
# Add more page name => path mappings here | ||
|
||
else | ||
raise "Can't find mapping from \"#{page_name}\" to a path.\n" + | ||
"Now, go and add a mapping in features/support/paths.rb" | ||
end | ||
end | ||
end | ||
|
||
World(NavigationHelpers) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
$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.cucumber_opts = "--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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
|
||
# Don't load rspec if running "rake gems:*" | ||
unless ARGV.any? {|a| a =~ /^gems/} | ||
|
||
begin | ||
require 'spec/rake/spectask' | ||
rescue MissingSourceFile | ||
module Spec | ||
module Rake | ||
class SpecTask | ||
def initialize(name) | ||
task name do | ||
# if rspec-rails is a configured gem, this will output helpful material and exit ... | ||
require File.expand_path(File.dirname(__FILE__) + "/../../config/environment") | ||
|
||
# ... otherwise, do this: | ||
raise <<-MSG | ||
#{"*" * 80} | ||
* You are trying to run an rspec rake task defined in | ||
* #{__FILE__}, | ||
* but rspec can not be found in vendor/gems, vendor/plugins or system gems. | ||
#{"*" * 80} | ||
MSG | ||
end | ||
end | ||
end | ||
end | ||
end | ||
end | ||
|
||
Rake.application.instance_variable_get('@tasks').delete('default') | ||
|
||
spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop | ||
task :noop do | ||
end | ||
|
||
task :default => :spec | ||
task :stats => "spec:statsetup" | ||
|
||
desc "Run all specs in spec directory (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['spec/**/*/*_spec.rb'] | ||
end | ||
|
||
namespace :spec do | ||
desc "Run all specs in spec directory with RCov (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:rcov) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['spec/**/*/*_spec.rb'] | ||
t.rcov = true | ||
t.rcov_opts = lambda do | ||
IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten | ||
end | ||
end | ||
|
||
desc "Print Specdoc for all specs (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:doc) do |t| | ||
t.spec_opts = ["--format", "specdoc", "--dry-run"] | ||
t.spec_files = FileList['spec/**/*/*_spec.rb'] | ||
end | ||
|
||
desc "Print Specdoc for all plugin examples" | ||
Spec::Rake::SpecTask.new(:plugin_doc) do |t| | ||
t.spec_opts = ["--format", "specdoc", "--dry-run"] | ||
t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*') | ||
end | ||
|
||
[:models, :controllers, :views, :helpers, :lib].each do |sub| | ||
desc "Run the code examples in spec/#{sub}" | ||
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"] | ||
end | ||
end | ||
|
||
desc "Run the code examples in vendor/plugins (except RSpec's own)" | ||
Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*") | ||
end | ||
|
||
namespace :plugins do | ||
desc "Runs the examples for rspec_on_rails" | ||
Spec::Rake::SpecTask.new(:rspec_on_rails) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb'] | ||
end | ||
end | ||
|
||
# Setup specs for stats | ||
task :statsetup do | ||
require 'code_statistics' | ||
::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models') | ||
::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views') | ||
::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers') | ||
::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers') | ||
::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib') | ||
::STATS_DIRECTORIES << %w(Routing\ specs spec/lib) if File.exist?('spec/routing') | ||
::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models') | ||
::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views') | ||
::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers') | ||
::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers') | ||
::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib') | ||
::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing') | ||
end | ||
|
||
namespace :db do | ||
namespace :fixtures do | ||
desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z." | ||
task :load => :environment do | ||
ActiveRecord::Base.establish_connection(Rails.env) | ||
base_dir = File.join(Rails.root, 'spec', 'fixtures') | ||
fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir | ||
|
||
require 'active_record/fixtures' | ||
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file| | ||
Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*')) | ||
end | ||
end | ||
end | ||
end | ||
|
||
namespace :server do | ||
daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/pids/spec_server.pid") | ||
|
||
desc "start spec_server." | ||
task :start do | ||
if File.exist?(daemonized_server_pid) | ||
$stderr.puts "spec_server is already running." | ||
else | ||
$stderr.puts %Q{Starting up spec_server ...} | ||
FileUtils.mkdir_p('tmp/pids') unless test ?d, 'tmp/pids' | ||
system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid) | ||
end | ||
end | ||
|
||
desc "stop spec_server." | ||
task :stop do | ||
unless File.exist?(daemonized_server_pid) | ||
$stderr.puts "No server running." | ||
else | ||
$stderr.puts "Shutting down spec_server ..." | ||
system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) && | ||
File.delete(daemonized_server_pid) | ||
end | ||
end | ||
|
||
desc "restart spec_server." | ||
task :restart => [:stop, :start] | ||
|
||
desc "check if spec server is running" | ||
task :status do | ||
if File.exist?(daemonized_server_pid) | ||
$stderr.puts %Q{spec_server is running (PID: #{File.read(daemonized_server_pid).gsub("\n","")})} | ||
else | ||
$stderr.puts "No server running." | ||
end | ||
end | ||
end | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/usr/bin/env ruby | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
ENV['RSPEC'] = 'true' # allows autotest to discover rspec | ||
ENV['AUTOTEST'] = 'true' # allows autotest to run w/ color on linux | ||
system((RUBY_PLATFORM =~ /mswin|mingw/ ? 'autotest.bat' : 'autotest'), *ARGV) || | ||
$stderr.puts("Unable to find autotest. Please install ZenTest or fix your PATH") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#!/usr/bin/env ruby | ||
if ARGV.any? {|arg| %w[--drb -X --generate-options -G --help -h --version -v].include?(arg)} | ||
require 'rubygems' unless ENV['NO_RUBYGEMS'] | ||
else | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
ENV["RAILS_ENV"] ||= 'test' | ||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") unless defined?(RAILS_ROOT) | ||
end | ||
require 'spec/autorun' | ||
exit ::Spec::Runner::CommandLine.run |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/usr/bin/env ruby | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
|
||
puts "Loading Rails environment" | ||
ENV["RAILS_ENV"] ||= 'test' | ||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") unless defined?(RAILS_ROOT) | ||
|
||
require 'optparse' | ||
require 'spec/rails/spec_server' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
--exclude "spec/*,gems/*" | ||
--rails |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
--colour | ||
--format progress | ||
--loadby mtime | ||
--reverse |
Oops, something went wrong.