Skip to content

Commit

Permalink
Merge remote branch 'paulelliott/current_path'
Browse files Browse the repository at this point in the history
  • Loading branch information
jnicklas committed Jun 29, 2010
2 parents 8f1d4b4 + db16a19 commit 8152b55
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 4 deletions.
4 changes: 4 additions & 0 deletions README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,10 @@ You can use the <tt>visit</tt> method to navigate to other pages:
The visit method only takes a single parameter, the request method is *always*
GET.

You can get the current path of the browsing session for test assertions:

current_path.should == post_comments_path(post)

=== Clicking links and buttons

You can interact with the webapp by following links and buttons. Capybara
Expand Down
4 changes: 4 additions & 0 deletions lib/capybara/driver/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ def current_url
raise NotImplementedError
end

def current_path
URI.parse(current_url).path
end

def visit(path)
raise NotImplementedError
end
Expand Down
6 changes: 3 additions & 3 deletions lib/capybara/driver/rack_test_driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ def visit(path, attributes = {})
end

def process(method, path, attributes = {})
return if path.gsub(/^#{current_path}/, '') =~ /^#/
return if path.gsub(/^#{request_path}/, '') =~ /^#/
send(method, path, attributes, env)
follow_redirects!
end
Expand All @@ -210,7 +210,7 @@ def status_code
end

def submit(method, path, attributes)
path = current_path if not path or path.empty?
path = request_path if not path or path.empty?
send(method, path, attributes, env)
follow_redirects!
end
Expand Down Expand Up @@ -248,7 +248,7 @@ def build_rack_mock_session # :nodoc:
Rack::MockSession.new(app, Capybara.default_host || "www.example.com")
end

def current_path
def request_path
request.path rescue ""
end

Expand Down
3 changes: 2 additions & 1 deletion lib/capybara/session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class Session
:has_no_content?, :has_no_css?, :has_no_xpath?, :has_xpath?, :locate, :save_and_open_page, :select, :source, :uncheck,
:visit, :wait_until, :within, :within_fieldset, :within_table, :within_frame, :has_link?, :has_no_link?, :has_button?,
:has_no_button?, :has_field?, :has_no_field?, :has_checked_field?, :has_unchecked_field?, :has_no_table?, :has_table?,
:unselect, :has_select?, :has_no_select?
:unselect, :has_select?, :has_no_select?, :current_path
]

attr_reader :mode, :app
Expand All @@ -34,6 +34,7 @@ def driver

def_delegator :driver, :cleanup!
def_delegator :driver, :current_url
def_delegator :driver, :current_path
def_delegator :driver, :response_headers
def_delegator :driver, :status_code
def_delegator :driver, :visit
Expand Down
5 changes: 5 additions & 0 deletions lib/capybara/spec/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
@driver.visit('/foo')
@driver.current_url.should include('/foo')
end

it 'should show the correct location' do
@driver.visit('/foo')
@driver.current_path.should == '/foo'
end
end

describe '#body' do
Expand Down

0 comments on commit 8152b55

Please sign in to comment.