upgrade rake (0.9.2), cucumber-rails (1.0.2), capybara

This commit is contained in:
did 2011-06-29 03:05:07 +02:00
parent c1f89f1cca
commit c8f0ad0bbe
13 changed files with 381 additions and 250 deletions

15
Gemfile
View File

@ -2,7 +2,7 @@ source :rubygems
# add in all the runtime dependencies
gem 'rake', '0.8.7'
gem 'rake', '0.9.2'
gem 'rails', '3.0.9'
@ -42,8 +42,9 @@ gem 'SystemTimer', :platforms => :ruby_18
# The rest of the dependencies are for use when in the locomotive dev environment
group :development do
# Using unicorn_rails instead of webrick (default server)
gem 'unicorn'
gem 'unicorn' # Using unicorn_rails instead of webrick (default server)
gem 'rspec-rails', '2.3.1' # in order to have rspec tasks and generators
end
group :test, :development do
@ -52,6 +53,8 @@ group :test, :development do
gem 'ruby-debug19', :platforms => :mri_19
gem 'bushido_stub', :git => 'git://github.com/did/bushido_stub.git'
gem 'cucumber-rails', '1.0.2'
end
group :production do
@ -65,12 +68,10 @@ group :test do
gem 'rspec-rails', '2.3.1'
gem 'factory_girl_rails'
gem 'pickle'
gem 'xpath', '0.1.3'
gem 'xpath', '~> 0.1.4'
gem 'capybara'
gem 'database_cleaner'
gem 'cucumber', '0.8.5'
gem 'cucumber-rails'
gem 'spork'
gem 'launchy'
gem 'mocha', :git => 'git://github.com/floehopper/mocha.git'

View File

@ -63,30 +63,28 @@ GEM
json (>= 1.4.6)
rest-client (>= 1.6.1)
cancan (1.6.5)
capybara (0.4.1.2)
celerity (>= 0.7.9)
culerity (>= 0.2.4)
capybara (1.0.0)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
selenium-webdriver (>= 0.0.27)
xpath (~> 0.1.3)
celerity (0.8.9)
selenium-webdriver (~> 0.2.0)
xpath (~> 0.1.4)
childprocess (0.1.9)
ffi (~> 1.0.6)
columnize (0.3.3)
configuration (1.3.1)
crack (0.1.8)
cucumber (0.8.5)
builder (~> 2.1.2)
diff-lcs (~> 1.1.2)
gherkin (~> 2.1.4)
json_pure (~> 1.4.3)
term-ansicolor (~> 1.0.4)
cucumber-rails (0.3.2)
cucumber (>= 0.8.0)
culerity (0.2.15)
cucumber (1.0.0)
builder (>= 2.1.2)
diff-lcs (>= 1.1.2)
gherkin (~> 2.4.1)
json (>= 1.4.6)
term-ansicolor (>= 1.0.5)
cucumber-rails (1.0.2)
capybara (>= 1.0.0)
cucumber (~> 1.0.0)
nokogiri (>= 1.4.6)
custom_fields (1.0.0.beta.19)
activesupport (>= 3.0.7)
mongoid (= 2.0.2)
@ -127,8 +125,8 @@ GEM
actionpack (>= 2.3.7)
activesupport (>= 2.3.7)
i18n (~> 0.4)
gherkin (2.1.5)
trollop (~> 1.16.2)
gherkin (2.4.1)
json (>= 1.4.6)
growl-glue (1.0.7)
haml (3.1.2)
has_scope (0.5.0)
@ -146,7 +144,7 @@ GEM
jammit (0.6.3)
yui-compressor (>= 0.9.3)
json (1.5.3)
json_pure (1.4.6)
json_pure (1.5.3)
kgio (2.5.0)
launchy (0.3.7)
configuration (>= 0.0.5)
@ -208,8 +206,8 @@ GEM
rdoc (~> 3.4)
thor (~> 0.14.4)
raindrops (0.7.0)
rake (0.8.7)
rdoc (3.6.1)
rake (0.9.2)
rdoc (3.7)
responders (0.6.4)
rest-client (1.6.3)
mime-types (>= 1.16)
@ -257,8 +255,7 @@ GEM
thor (0.14.6)
treetop (1.4.9)
polyglot (>= 0.3.1)
trollop (1.16.2)
tzinfo (0.3.28)
tzinfo (0.3.29)
unicorn (4.0.0)
kgio (~> 2.4)
rack
@ -266,7 +263,7 @@ GEM
warden (1.0.4)
rack (>= 1.0)
will_paginate (2.3.15)
xpath (0.1.3)
xpath (0.1.4)
nokogiri (~> 1.3)
yui-compressor (0.9.6)
POpen4 (>= 0.1.4)
@ -285,8 +282,7 @@ DEPENDENCIES
bushido_stub!
cancan
capybara
cucumber (= 0.8.5)
cucumber-rails
cucumber-rails (= 1.0.2)
custom_fields (= 1.0.0.beta.19)
database_cleaner
delayed_job (= 2.1.4)
@ -313,7 +309,7 @@ DEPENDENCIES
pickle
rack-cache
rails (= 3.0.9)
rake (= 0.8.7)
rake (= 0.9.2)
rmagick (= 2.12.2)
rspec-rails (= 2.3.1)
ruby-debug
@ -324,4 +320,4 @@ DEPENDENCIES
unicorn
warden
will_paginate
xpath (= 0.1.3)
xpath (~> 0.1.4)

View File

@ -1,20 +1,21 @@
require File.expand_path('../config/application', __FILE__)
require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/gempackagetask'
require 'rdoc/task'
require 'rubygems/package_task'
Locomotive::Application.load_tasks
gemspec = eval(File.read('locomotive_cms.gemspec'))
Rake::GemPackageTask.new(gemspec) do |pkg|
Gem::PackageTask.new(gemspec) do |pkg|
pkg.gem_spec = gemspec
end
desc "build the gem and release it to rubygems.org"
desc 'build the gem and release it to rubygems.org'
task :release => :gem do
sh "gem push pkg/locomotive_cms-#{gemspec.version}.gem"
sh "gem push pkg/custom_fields-#{gemspec.version}.gem"
end
task :default => [:spec, :cucumber]

View File

@ -1,2 +1,8 @@
default: features --require features --format pretty --color --tags ~@wip
wip: features --require features --tags @wip
<%
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'] || 'pretty'} --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 File

@ -3,6 +3,7 @@ BOARD:
x bushido version
x default template
~ editable_elements: inheritable: false (Mattias) => seems to be fixed by Dirk's last pull request (#44) => content tag
x resizing images on the fly
x locomedia tinyMCE plugin (Bernd)
x remove asset_collections
x site templates
@ -49,9 +50,9 @@ x enable rack-cache only for a specific url
=> MERGE
- bugs
- heroku: unable to upload a new file
- import
- delete an item
- heroku: unable to upload a new file => okay
- import => okay
- delete an item => okay
- liquid tag: Date.today (now), add a test to compare 2 dates
- better ui: increase text field length + refactor error message
@ -86,7 +87,7 @@ BUGS:
NICE TO HAVE:
- export site
- asset collections: custom resizing if image
- super_finder
- traffic statistics
- asset picker (content instance)
@ -94,7 +95,6 @@ NICE TO HAVE:
- automatic update !
- page not found (front) => if logged in, link to create the page
- switch to list (theme assets / assets ?). delete all in once (with checkbox) or see details (updated_at, size, ...etc)
- resizing images on the fly
- code completion ? http://blog.quplo.com/2010/06/common-sense-code-completion/
DONE:
@ -268,3 +268,4 @@ x integrate new locomotivecms home
x seo section for the page form: seo title, seo keywords, seo description
x bugs: #50, #51
x 2 different sites on the same main domain (one in www, the other one in something else) (Raphael Costa)
! asset collections: custom resizing if image

View File

@ -5,6 +5,12 @@ Feature: Manage Contents
Background:
Given I have the site: "test site" set up
And I have a custom project model
And I am an authenticated user
Scenario: Adding a new entry
When I go to the "Projects" model edition page
And I follow "new item"
Then I should see "Projects new item"

View File

@ -33,13 +33,12 @@ end
Then /^I should have "(.*)" in the (.*) page$/ do |content, page_slug|
page = @site.pages.where(:slug => page_slug).first
raise "Could not find page: #{page_slug}" unless page
page.raw_template.should == content
end
# checks if the rendered body matches a string
Then /^the rendered output should look like:$/ do |body_contents|
page.body.should == body_contents
page.source.should == body_contents
end
Then /^I should see delete page buttons$/ do

View File

@ -1,21 +1,32 @@
# TL;DR: YOU SHOULD DELETE THIS FILE
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
# It is recommended to regenerate this file in the future when you upgrade to a
# newer version of cucumber-rails. Consider adding your own code to a new file
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
# files.
require 'uri'
require 'cgi'
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
module WithinHelpers
def with_scope(locator)
locator ? within(locator) { yield } : yield
locator ? within(*selector_for(locator)) { yield } : yield
end
end
World(WithinHelpers)
# Single-line step scoper
When /^(.*) within (.*[^:])$/ do |step, parent|
with_scope(parent) { When step }
end
# Multi-line step scoper
When /^(.*) within (.*[^:]):$/ do |step, parent, table_or_string|
with_scope(parent) { When "#{step}:", table_or_string }
end
Given /^(?:|I )am on (.+)$/ do |page_name|
visit path_to(page_name)
end
@ -24,28 +35,20 @@ When /^(?:|I )go to (.+)$/ do |page_name|
visit path_to(page_name)
end
When /^(?:|I )press "([^\"]*)"(?: within "([^\"]*)")?$/ do |button, selector|
with_scope(selector) do
When /^(?:|I )press "([^"]*)"$/ do |button|
click_button(button)
end
end
When /^(?:|I )follow "([^\"]*)"(?: within "([^\"]*)")?$/ do |link, selector|
with_scope(selector) do
When /^(?:|I )follow "([^"]*)"$/ do |link|
click_link(link)
end
end
When /^(?:|I )fill in "([^\"]*)" with "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, value, selector|
with_scope(selector) do
When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
fill_in(field, :with => value)
end
end
When /^(?:|I )fill in "([^\"]*)" for "([^\"]*)"(?: within "([^\"]*)")?$/ do |value, field, selector|
with_scope(selector) do
When /^(?:|I )fill in "([^"]*)" for "([^"]*)"$/ do |value, field|
fill_in(field, :with => value)
end
end
# Use this to fill in an entire form with data from a table. Example:
@ -59,95 +62,70 @@ end
# TODO: Add support for checkbox, select og option
# based on naming conventions.
#
When /^(?:|I )fill in the following(?: within "([^\"]*)")?:$/ do |selector, fields|
with_scope(selector) do
When /^(?:|I )fill in the following:$/ do |fields|
fields.rows_hash.each do |name, value|
When %{I fill in "#{name}" with "#{value}"}
end
end
end
When /^(?:|I )select "([^\"]*)" from "([^\"]*)"(?: within "([^\"]*)")?$/ do |value, field, selector|
with_scope(selector) do
When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
select(value, :from => field)
end
end
When /^(?:|I )check "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector|
with_scope(selector) do
When /^(?:|I )check "([^"]*)"$/ do |field|
check(field)
end
end
When /^(?:|I )uncheck "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector|
with_scope(selector) do
When /^(?:|I )uncheck "([^"]*)"$/ do |field|
uncheck(field)
end
end
When /^(?:|I )choose "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector|
with_scope(selector) do
When /^(?:|I )choose "([^"]*)"$/ do |field|
choose(field)
end
end
When /^(?:|I )attach the file "([^\"]*)" to "([^\"]*)"(?: within "([^\"]*)")?$/ do |path, field, selector|
with_scope(selector) do
attach_file(field, path)
end
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
attach_file(field, File.expand_path(path))
end
Then /^(?:|I )should see JSON:$/ do |expected_json|
require 'json'
expected = JSON.pretty_generate(JSON.parse(expected_json))
actual = JSON.pretty_generate(JSON.parse(response.body))
expected.should == actual
end
Then /^(?:|I )should see "([^\"]*)"(?: within "([^\"]*)")?$/ do |text, selector|
with_scope(selector) do
Then /^(?:|I )should see "([^"]*)"$/ do |text|
if page.respond_to? :should
page.should have_content(text)
else
assert page.has_content?(text)
end
end
end
Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^\"]*)")?$/ do |regexp, selector|
Then /^(?:|I )should see \/([^\/]*)\/$/ do |regexp|
regexp = Regexp.new(regexp)
with_scope(selector) do
if page.respond_to? :should
page.should have_xpath('//*', :text => regexp)
else
assert page.has_xpath?('//*', :text => regexp)
end
end
end
Then /^(?:|I )should not see "([^\"]*)"(?: within "([^\"]*)")?$/ do |text, selector|
with_scope(selector) do
Then /^(?:|I )should not see "([^"]*)"$/ do |text|
if page.respond_to? :should
page.should have_no_content(text)
else
assert page.has_no_content?(text)
end
end
end
Then /^(?:|I )should not see \/([^\/]*)\/(?: within "([^\"]*)")?$/ do |regexp, selector|
Then /^(?:|I )should not see \/([^\/]*)\/$/ do |regexp|
regexp = Regexp.new(regexp)
with_scope(selector) do
if page.respond_to? :should
page.should have_no_xpath('//*', :text => regexp)
else
assert page.has_no_xpath?('//*', :text => regexp)
end
end
end
Then /^the "([^\"]*)" field(?: within "([^\"]*)")? should contain "([^\"]*)"$/ do |field, selector, value|
with_scope(selector) do
Then /^the "([^"]*)" field(?: within (.*))? should contain "([^"]*)"$/ do |field, parent, value|
with_scope(parent) do
field = find_field(field)
field_value = (field.tag_name == 'textarea') ? field.text : field.value
if field_value.respond_to? :should
@ -158,8 +136,8 @@ Then /^the "([^\"]*)" field(?: within "([^\"]*)")? should contain "([^\"]*)"$/ d
end
end
Then /^the "([^\"]*)" field(?: within "([^\"]*)")? should not contain "([^\"]*)"$/ do |field, selector, value|
with_scope(selector) do
Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |field, parent, value|
with_scope(parent) do
field = find_field(field)
field_value = (field.tag_name == 'textarea') ? field.text : field.value
if field_value.respond_to? :should_not
@ -170,24 +148,24 @@ Then /^the "([^\"]*)" field(?: within "([^\"]*)")? should not contain "([^\"]*)"
end
end
Then /^the "([^\"]*)" checkbox(?: within "([^\"]*)")? should be checked$/ do |label, selector|
with_scope(selector) do
Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
with_scope(parent) do
field_checked = find_field(label)['checked']
if field_checked.respond_to? :should
field_checked.should == 'checked'
field_checked.should be_true
else
assert_equal 'checked', field_checked
assert field_checked
end
end
end
Then /^the "([^\"]*)" checkbox(?: within "([^\"]*)")? should not be checked$/ do |label, selector|
with_scope(selector) do
Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label, parent|
with_scope(parent) do
field_checked = find_field(label)['checked']
if field_checked.respond_to? :should_not
field_checked.should_not == 'checked'
if field_checked.respond_to? :should
field_checked.should be_false
else
assert_not_equal 'checked', field_checked
assert !field_checked
end
end
end

View File

@ -4,46 +4,159 @@
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
# files.
ENV["RAILS_ENV"] ||= "test"
# ENV['RAILS_ENV'] ||= 'test'
#
# require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
#
# require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
# require 'cucumber/rails'
# require 'cucumber/rails/rspec'
# require 'cucumber/rails/world'
# require 'cucumber/web/tableish'
#
# require 'capybara/rails'
# require 'capybara/cucumber'
# require 'capybara/session'
#
# # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
# # order to ease the transition to Capybara we set the default here. If you'd
# # prefer to use XPath just remove this line and adjust any selectors in your
# # steps to use the XPath syntax.
# Capybara.default_selector = :css
#
# Capybara.javascript_driver = :selenium
#
# Capybara.default_host = 'test.example.com'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
# require 'cucumber/rails'
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
require 'cucumber/rails/rspec'
require 'cucumber/rails/world'
require 'cucumber/web/tableish'
# require 'capybara'
require 'capybara/rails'
require 'capybara/cucumber'
require 'capybara/session'
require 'ruby-debug'
# Capybara.default_selector = :css
# envjs doesnt work at the moment
# require 'capybara/envjs'
Capybara.configure do |config|
config.run_server = false
config.default_selector = :css
config.app_host = 'http://test.example.com'
end
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
# order to ease the transition to Capybara we set the default here. If you'd
# prefer to use XPath just remove this line and adjust any selectors in your
# steps to use the XPath syntax.
Capybara.default_selector = :css
Capybara.javascript_driver = :rack_test # :selenium
Capybara.javascript_driver = :selenium
# If you set this to false, any error raised from within your app will bubble
# up to your step definition and out to cucumber unless you catch it somewhere
# on the way. You can make Rails rescue errors and render error pages on a
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
# Stop endless errors like
# ~/.rvm/gems/ruby-1.9.2-p0@global/gems/rack-1.2.1/lib/rack/utils.rb:16:
# warning: regexp match /.../n against to UTF-8 string
# more information here: https://github.com/jnicklas/capybara/issues/243
# $VERBOSE = nil
# Capybara.default_host = 'test.example.com'
# Capybara.app_host = 'test.example.com'
# By default, any exception happening in your Rails application will bubble up
# to Cucumber so that your scenario will fail. This is a different from how
# your application behaves in the production environment, where an error page will
# be rendered instead.
#
# If you set this to true, Rails will rescue all errors and render error
# pages, more or less in the same way your application would behave in the
# default production environment. It's not recommended to do this for all
# of your scenarios, as this makes it hard to discover errors in your application.
ActionController::Base.allow_rescue = false
# Sometimes we want to override this default behaviour and allow Rails to rescue
# exceptions and display an error page (just like when the app is running in production).
# Typical scenarios where you want to do this is when you test your error pages.
# There are two ways to allow Rails to rescue exceptions:
#
# 1) Tag your scenario (or feature) with @allow-rescue
#
# 2) Set the value below to true. Beware that doing this globally is not
# recommended as it will mask a lot of errors for you!
#
# ActionController::Base.allow_rescue = false
# # Remove/comment out the lines below if your app doesn't have a database.
# # For some databases (like MongoDB and CouchDB) you may need to use :truncation instead.
# begin
# DatabaseCleaner.strategy = :transaction
# rescue NameError
# raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
# end
Capybara.default_host = 'test.example.com'
# Capybara.app_host = 'http://test.example.com'
require File.expand_path(File.dirname(__FILE__) + '/../../spec/support/carrierwave')
require File.expand_path(File.dirname(__FILE__) + '/../../spec/support/locomotive')
Locomotive.configure_for_test(true)
# You may also want to configure DatabaseCleaner to use different strategies for certain features and scenarios.
# See the DatabaseCleaner documentation for details. Example:
#
# Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
# DatabaseCleaner.strategy = :truncation, {:except => %w[widgets]}
# end
#
# Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
# DatabaseCleaner.strategy = :transaction
# end
#
# # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
# # It is recommended to regenerate this file in the future when you upgrade to a
# # newer version of cucumber-rails. Consider adding your own code to a new file
# # instead of editing this one. Cucumber will automatically load all features/**/*.rb
# # files.
#
# ENV["RAILS_ENV"] ||= "test"
# require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
#
# # require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
# # require 'cucumber/rails/rspec'
# # require 'cucumber/rails/world'
# # require 'cucumber/web/tableish'
#
# require 'cucumber/rails'
#
# require 'capybara/rails'
# require 'capybara/cucumber'
# require 'capybara/session'
#
# # require 'ruby-debug'
#
# # envjs doesnt work at the moment
# # require 'capybara/envjs'
#
# # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
# # order to ease the transition to Capybara we set the default here. If you'd
# # prefer to use XPath just remove this line and adjust any selectors in your
# # steps to use the XPath syntax.
# Capybara.default_selector = :css
#
# Capybara.javascript_driver = :selenium
#
# # If you set this to false, any error raised from within your app will bubble
# # up to your step definition and out to cucumber unless you catch it somewhere
# # on the way. You can make Rails rescue errors and render error pages on a
# # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
# #
# # If you set this to true, Rails will rescue all errors and render error
# # pages, more or less in the same way your application would behave in the
# # default production environment. It's not recommended to do this for all
# # of your scenarios, as this makes it hard to discover errors in your application.
# ActionController::Base.allow_rescue = false
#
# Capybara.default_host = 'test.example.com'
# # Capybara.app_host = 'http://test.example.com'
#
# require File.expand_path(File.dirname(__FILE__) + '/../../spec/support/carrierwave')
# require File.expand_path(File.dirname(__FILE__) + '/../../spec/support/locomotive')
#
# Locomotive.configure_for_test(true)

View File

@ -8,7 +8,7 @@ module NavigationHelpers
def path_to(page_name)
case page_name
when /the home\s?page/
when /the home\s?page$/
'/'
when /login/
new_admin_session_path
@ -39,10 +39,10 @@ module NavigationHelpers
else
begin
page_name =~ /the (.*) page/
page_name =~ /^the (.*) page$/
path_components = $1.split(/\s+/)
self.send(path_components.push('path').join('_').to_sym)
rescue Object => e
rescue NoMethodError, ArgumentError
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
@ -51,3 +51,58 @@ module NavigationHelpers
end
World(NavigationHelpers)
# module NavigationHelpers
# # Maps a name to a path. Used by the
# #
# # When /^I go to (.+)$/ do |page_name|
# #
# # step definition in web_steps.rb
# #
# def path_to(page_name)
# case page_name
#
# when /the home\s?page/
# '/'
# when /login/
# new_admin_session_path
# when /logout/
# destroy_admin_session_path
# when /pages( list)?/
# admin_pages_path
# when /new page/
# new_admin_page_path
# when /"(.*)" edition page/
# page = Site.first.pages.where(:slug => $1).first
# edit_admin_page_path(page)
# when /theme assets/
# admin_theme_assets_path
# when /site settings/
# edit_admin_current_site_path
# when /import page/
# new_admin_import_path
# when /the "(.*)" model edition page/
# content_type = Site.first.content_types.where(:name => $1).first
# edit_admin_content_type_path(content_type)
#
# # Add more mappings here.
# # Here is an example that pulls values out of the Regexp:
# #
# # when /^(.*)'s profile page$/i
# # user_profile_path(User.find_by_login($1))
#
# else
# begin
# page_name =~ /the (.*) page/
# path_components = $1.split(/\s+/)
# self.send(path_components.push('path').join('_').to_sym)
# rescue Object => e
# raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
# "Now, go and add a mapping in #{__FILE__}"
# end
# end
# end
# end
#
# World(NavigationHelpers)

View File

@ -0,0 +1,39 @@
module HtmlSelectorsHelpers
# Maps a name to a selector. Used primarily by the
#
# When /^(.+) within (.+)$/ do |step, scope|
#
# step definitions in web_steps.rb
#
def selector_for(locator)
case locator
when "the page"
"html > body"
# Add more mappings here.
# Here is an example that pulls values out of the Regexp:
#
# when /^the (notice|error|info) flash$/
# ".flash.#{$1}"
# You can also return an array to use a different selector
# type, like:
#
# when /the header/
# [:xpath, "//header"]
# This allows you to provide a quoted selector as the scope
# for "within" steps as was previously the default for the
# web steps:
when /^"(.+)"$/
$1
else
raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end
World(HtmlSelectorsHelpers)

View File

@ -34,6 +34,12 @@ begin
desc 'Run all features'
task :all => [:ok, :wip]
task :statsetup do
require 'rails/code_statistics'
::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')
end
end
desc 'Alias for cucumber:ok'
task :cucumber => 'cucumber:ok'
@ -43,6 +49,8 @@ begin
task :features => :cucumber do
STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
end
task :stats => 'cucumber:statsetup'
rescue LoadError
desc 'cucumber rake task not available (cucumber not installed)'
task :cucumber do

View File

@ -1,72 +0,0 @@
begin
require 'rspec/core'
require 'rspec/core/rake_task'
rescue MissingSourceFile
module Rspec
module Core
class RakeTask
include ::Rake::DSL
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 = :noop # we are using mongoid and not ActiveRecord, no need to prepare the test database
task :noop do
end
task :default => :spec
task :stats => "spec:statsetup"
desc "Run all specs in spec directory (excluding plugin specs)"
Rspec::Core::RakeTask.new(:spec => spec_prereq)
namespace :spec do
[:requests, :models, :controllers, :views, :helpers, :mailers, :lib].each do |sub|
desc "Run the code examples in spec/#{sub}"
Rspec::Core::RakeTask.new(sub => spec_prereq) do |t|
t.pattern = "./spec/#{sub}/**/*_spec.rb"
end
end
task :statsetup do
require 'rails/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(Mailer\ specs spec/mailers) if File.exist?('spec/mailers')
::STATS_DIRECTORIES << %w(Routing\ specs spec/routing) if File.exist?('spec/routing')
::STATS_DIRECTORIES << %w(Request\ specs spec/requests) if File.exist?('spec/requests')
::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 << "Mailer specs" if File.exist?('spec/mailer')
::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
::CodeStatistics::TEST_TYPES << "Request specs" if File.exist?('spec/requests')
end
end