# 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 File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths")) module WithinHelpers def with_scope(locator) locator ? within(locator) { yield } : yield end end World(WithinHelpers) 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 "([^\"]*)"(?: within "([^\"]*)")?$/ do |button, selector| with_scope(selector) do click_button(button) end end When /^(?:|I )follow "([^\"]*)"(?: within "([^\"]*)")?$/ do |link, selector| with_scope(selector) do click_link(link) end end When /^(?:|I )fill in "([^\"]*)" with "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, value, selector| with_scope(selector) do fill_in(field, :with => value) end end When /^(?:|I )fill in "([^\"]*)" for "([^\"]*)"(?: within "([^\"]*)")?$/ do |value, field, selector| with_scope(selector) do fill_in(field, :with => value) end end # Use this to fill in an entire form with data from a table. Example: # # When I fill in the following: # | Account Number | 5002 | # | Expiry date | 2009-11-01 | # | Note | Nice guy | # | Wants Email? | | # # 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 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 select(value, :from => field) end end When /^(?:|I )check "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector| with_scope(selector) do check(field) end end When /^(?:|I )uncheck "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector| with_scope(selector) do uncheck(field) end end When /^(?:|I )choose "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector| with_scope(selector) do choose(field) end end When /^(?:|I )attach the file "([^\"]*)" to "([^\"]*)"(?: within "([^\"]*)")?$/ do |path, field, selector| with_scope(selector) do attach_file(field, path) end end Then /^(?:|I )should see "([^\"]*)"(?: within "([^\"]*)")?$/ do |text, selector| with_scope(selector) do if defined?(Spec::Rails::Matchers) page.should have_content(text) else begin assert page.has_content?(text) rescue Exception => ex puts page.body raise ex end end end end Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^\"]*)")?$/ do |regexp, selector| regexp = Regexp.new(regexp) with_scope(selector) do if defined?(Spec::Rails::Matchers) 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 if defined?(Spec::Rails::Matchers) 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| regexp = Regexp.new(regexp) with_scope(selector) do if defined?(Spec::Rails::Matchers) page.shoul have_not_xpath('//*', :text => regexp) else assert page.has_not_xpath?('//*', :text => regexp) end end end Then /^the "([^\"]*)" field(?: within "([^\"]*)")? should contain "([^\"]*)"$/ do |field, selector, value| with_scope(selector) do if defined?(Spec::Rails::Matchers) find_field(field).value.should =~ /#{value}/ else assert_match(/#{value}/, field_labeled(field).value) end end end Then /^the "([^\"]*)" field(?: within "([^\"]*)")? should not contain "([^\"]*)"$/ do |field, selector, value| with_scope(selector) do if defined?(Spec::Rails::Matchers) find_field(field).value.should_not =~ /#{value}/ else assert_no_match(/#{value}/, find_field(field).value) end end end Then /^the "([^\"]*)" checkbox(?: within "([^\"]*)")? should be checked$/ do |label, selector| with_scope(selector) do if defined?(Spec::Rails::Matchers) find_field(label)['checked'].should == 'checked' else assert field_labeled(label)['checked'] == 'checked' end end end Then /^the "([^\"]*)" checkbox(?: within "([^\"]*)")? should not be checked$/ do |label, selector| with_scope(selector) do if defined?(Spec::Rails::Matchers) find_field(label)['checked'].should_not == 'checked' else assert field_labeled(label)['checked'] != 'checked' end end end Then /^(?:|I )should be on (.+)$/ do |page_name| current_path = URI.parse(current_url).select(:path, :query).compact.join('?') if defined?(Spec::Rails::Matchers) current_path.should == path_to(page_name) else assert_equal path_to(page_name), current_path end end Then /^show me the page$/ do save_and_open_page end