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')