lib/capybara/spec/session.rb in capybara-0.4.1.2 vs lib/capybara/spec/session.rb in capybara-1.0.0.beta1
- old
+ new
@@ -7,19 +7,13 @@
def extract_results(session)
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.text
end
after do
- @session.reset!
+ @session.reset_session!
end
- describe '#app' do
- it "should remember the application" do
- @session.app.should == TestApp
- end
- end
-
describe '#visit' do
it "should fetch a response from the driver" do
@session.visit('/')
@session.body.should include('Hello world!')
@session.visit('/foo')
@@ -32,17 +26,65 @@
@session.visit('/')
@session.body.should include('Hello world!')
end
end
+ describe '#html' do
+ it "should return the unmodified page body" do
+ # html and body should be aliased, but we can't just check for
+ # method(:html) == method(:body) because these shared examples get run
+ # against the DSL, which uses forwarding methods. So we test behavior.
+ @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 '#reset_session!' do
+ it "removes cookies" do
+ @session.visit('/set_cookie')
+ @session.visit('/get_cookie')
+ @session.body.should include('test_cookie')
+
+ @session.reset_session!
+ @session.visit('/get_cookie')
+ @session.body.should_not include('test_cookie')
+ end
+
+ it "resets current host" do
+ @session.visit('http://capybara-testapp.heroku.com')
+ @session.current_host.should == 'http://capybara-testapp.heroku.com'
+
+ @session.reset_session!
+ @session.current_host.should be_nil
+ end
+
+ it "resets current path" do
+ @session.visit('/with_html')
+ @session.current_path.should == '/with_html'
+
+ @session.reset_session!
+ @session.current_path.should be_nil
+ end
+
+ it "resets page body" do
+ @session.visit('/with_html')
+ @session.body.should include('This is a test')
+ @session.find('.//h1').text.should include('This is a test')
+
+ @session.reset_session!
+ @session.body.should_not include('This is a test')
+ @session.should have_no_selector('.//h1')
+ end
+ end
+
it_should_behave_like "all"
it_should_behave_like "first"
it_should_behave_like "attach_file"
it_should_behave_like "check"
it_should_behave_like "choose"
@@ -64,13 +106,15 @@
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 "text"
it_should_behave_like "uncheck"
it_should_behave_like "unselect"
it_should_behave_like "within"
it_should_behave_like "current_url"
+ it_should_behave_like "current_host"
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')