module Turbolinks::Assertions
Constants
- TURBOLINKS_VISIT
Public Instance Methods
Source
# File lib/turbolinks/assertions.rb, line 5 def assert_redirected_to(options = {}, message = nil) if turbolinks_request? assert_turbolinks_visited(options, message) else super end end
Calls superclass method
Source
# File lib/turbolinks/assertions.rb, line 13 def assert_turbolinks_visited(options = {}, message = nil) assert_response(:ok, message) assert_equal("text/javascript", response.content_type) visit_location, _ = turbolinks_visit_location_and_action redirect_is = normalize_argument_to_redirection(visit_location) redirect_expected = normalize_argument_to_redirection(options) message ||= "Expected response to be a Turbolinks visit to <#{redirect_expected}> but was a visit to <#{redirect_is}>" assert_operator redirect_expected, :===, redirect_is, message end
Source
# File lib/turbolinks/assertions.rb, line 36 def turbolinks_request? !request.get? && response.content_type == "text/javascript" end
Rough heuristic to detect whether this was a Turbolinks
request: non-GET request with a text/javascript response.
Technically we’d check that Turbolinks-Referrer request header is also set, but that’d require us to pass the header from post/patch/etc test methods by overriding them to provide a ‘turbolinks:` option.
We can’t check ‘request.xhr?` here, either, since the X-Requested-With header is cleared after controller action processing to prevent it from leaking into subsequent requests.
Source
# File lib/turbolinks/assertions.rb, line 40 def turbolinks_visit_location_and_action if response.body =~ TURBOLINKS_VISIT [ $1, $2 ] end end