lib/capybara/spec/session.rb in capybara-0.3.9 vs lib/capybara/spec/session.rb in capybara-0.4.0.rc
- old
+ new
@@ -1,17 +1,19 @@
require 'capybara/spec/test_app'
require 'nokogiri'
-Dir[File.dirname(__FILE__)+'/session/*'].each { |group|
- require group
-}
+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
end
end
@@ -22,76 +24,30 @@
@session.body.should include('Hello world!')
@session.visit('/foo')
@session.body.should include('Another World')
end
end
-
+
describe '#body' do
it "should return the unmodified page body" do
@session.visit('/')
@session.body.should include('Hello world!')
end
end
-
+
describe '#source' do
it "should return the unmodified page source" do
@session.visit('/')
@session.source.should include('Hello world!')
end
end
- describe '#scope_to' do
- let(:scope) { @session.scope_to("//p[@id='first']") }
- let(:more_scope) { scope.scope_to("//a[@id='foo']") }
-
- before do
- @session.visit('/with_html')
- end
-
- it 'has a simple link' do
- scope.should have_xpath("//a[@class='simple']")
- end
-
- it 'does not have a redirect link' do
- scope.should have_no_xpath("//a[@id='red']")
- end
-
- it 'does have a redirect link' do
- @session.should have_xpath("//a[@id='red']")
- end
-
- it 'does not share scopes' do
- @session.should have_xpath("//a[@id='red']")
- scope.should have_no_xpath("//a[@id='red']")
- @session.should have_xpath("//a[@id='red']")
- end
-
- context 'more_scope' do
- it 'has the text for foo' do
- more_scope.should have_content('ullamco')
- end
-
- it 'does not have a simple link' do
- more_scope.should have_no_xpath("//a[@class='simple']")
- end
-
- it 'has not overridden scope' do
- scope.should have_xpath("//a[@class='simple']")
- end
-
- it 'has not overridden session' do
- @session.should have_xpath("//p[@id='second']")
- end
- end
-
- end
-
it_should_behave_like "all"
it_should_behave_like "attach_file"
it_should_behave_like "check"
it_should_behave_like "choose"
- it_should_behave_like "click"
+ 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"
@@ -99,21 +55,40 @@
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"
+ it_should_behave_like "has_selector"
it_should_behave_like "has_xpath"
it_should_behave_like "has_link"
it_should_behave_like "has_button"
it_should_behave_like "has_field"
it_should_behave_like "has_select"
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 "locate"
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('address2_city', :with => 'Mikolaiv')
+ @session.fill_in('address2_street', :with => 'PGS')
+ @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[1]["street"].should == 'PGS'
+ addresses[1]["city"].should == 'Mikolaiv'
+ end
+
end
describe Capybara::Session do
context 'with non-existant driver' do