teamcapybara--capybara/lib/capybara/spec/session.rb

111 lines
3.2 KiB
Ruby
Raw Normal View History

require 'capybara/spec/test_app'
require 'nokogiri'
2010-07-11 15:25:46 +00:00
Dir[File.dirname(__FILE__)+'/session/*'].each { |group| require group }
shared_examples_for "session" do
def extract_results(session)
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.text
end
after do
@session.reset!
end
describe '#app' do
it "should remember the application" do
@session.app.should == TestApp
2009-11-04 22:17:17 +00:00
end
end
2009-11-07 17:56:04 +00:00
describe '#visit' do
it "should fetch a response from the driver" do
@session.visit('/')
@session.body.should include('Hello world!')
@session.visit('/foo')
@session.body.should include('Another World')
2009-11-04 23:42:13 +00:00
end
2009-11-04 22:00:05 +00:00
end
2010-10-12 11:26:24 +00:00
describe '#body' do
it "should return the unmodified page body" do
@session.visit('/')
@session.body.should include('Hello world!')
end
end
2010-10-12 11:26:24 +00:00
describe '#source' do
it "should return the unmodified page source" do
@session.visit('/')
@session.source.should include('Hello world!')
end
end
it_should_behave_like "all"
2011-01-01 19:58:39 +00:00
it_should_behave_like "first"
it_should_behave_like "attach_file"
it_should_behave_like "check"
it_should_behave_like "choose"
2010-07-19 18:42:49 +00:00
it_should_behave_like "click_link_or_button"
it_should_behave_like "click_button"
it_should_behave_like "click_link"
it_should_behave_like "fill_in"
it_should_behave_like "find_button"
it_should_behave_like "find_field"
it_should_behave_like "find_link"
it_should_behave_like "find_by_id"
it_should_behave_like "find"
it_should_behave_like "has_content"
it_should_behave_like "has_css"
it_should_behave_like "has_css"
2010-10-12 11:26:24 +00:00
it_should_behave_like "has_selector"
it_should_behave_like "has_xpath"
2010-01-18 20:28:06 +00:00
it_should_behave_like "has_link"
2010-01-18 20:40:59 +00:00
it_should_behave_like "has_button"
2010-01-18 20:28:06 +00:00
it_should_behave_like "has_field"
2010-02-20 19:43:32 +00:00
it_should_behave_like "has_select"
2010-02-20 21:41:53 +00:00
it_should_behave_like "has_table"
it_should_behave_like "select"
it_should_behave_like "uncheck"
it_should_behave_like "unselect"
it_should_behave_like "within"
it_should_behave_like "current_url"
it "should encode complex field names, like array[][value]" do
@session.visit('/form')
@session.fill_in('address1_city', :with =>'Paris')
@session.fill_in('address1_street', :with =>'CDG')
@session.fill_in('address1_street', :with =>'CDG')
@session.select("France", :from => 'address1_country')
@session.fill_in('address2_city', :with => 'Mikolaiv')
@session.fill_in('address2_street', :with => 'PGS')
@session.select("Ukraine", :from => 'address2_country')
@session.click_button "awesome"
addresses=extract_results(@session)["addresses"]
addresses.should have(2).addresses
addresses[0]["street"].should == 'CDG'
addresses[0]["city"].should == 'Paris'
addresses[0]["country"].should == 'France'
addresses[1]["street"].should == 'PGS'
addresses[1]["city"].should == 'Mikolaiv'
addresses[1]["country"].should == 'Ukraine'
end
end
2009-11-16 21:02:16 +00:00
describe Capybara::Session do
context 'with non-existant driver' do
2009-11-04 22:17:17 +00:00
it "should raise an error" do
running {
2009-11-16 21:02:16 +00:00
Capybara::Session.new(:quox, TestApp).driver
}.should raise_error(Capybara::DriverNotFoundError)
2009-11-04 22:00:05 +00:00
end
end
2009-11-07 14:36:58 +00:00
end