2016-03-07 19:52:19 -05:00
|
|
|
# frozen_string_literal: true
|
2018-01-08 15:23:54 -05:00
|
|
|
|
2014-02-16 12:13:58 -05:00
|
|
|
module Capybara
|
|
|
|
# @api private
|
|
|
|
module Queries
|
|
|
|
class TitleQuery < BaseQuery
|
2016-08-17 19:14:39 -04:00
|
|
|
def initialize(expected_title, **options)
|
2014-02-16 12:13:58 -05:00
|
|
|
@expected_title = expected_title
|
|
|
|
@options = options
|
2017-05-28 11:54:55 -04:00
|
|
|
super(@options)
|
2014-02-16 12:13:58 -05:00
|
|
|
unless @expected_title.is_a?(Regexp)
|
|
|
|
@expected_title = Capybara::Helpers.normalize_whitespace(@expected_title)
|
|
|
|
end
|
2016-12-23 15:17:45 -05:00
|
|
|
@search_regexp = Capybara::Helpers.to_regexp(@expected_title, nil, options.fetch(:exact, false))
|
2014-02-16 12:13:58 -05:00
|
|
|
assert_valid_keys
|
|
|
|
end
|
|
|
|
|
|
|
|
def resolves_for?(node)
|
|
|
|
@actual_title = node.title
|
|
|
|
@actual_title.match(@search_regexp)
|
|
|
|
end
|
|
|
|
|
|
|
|
def failure_message
|
|
|
|
failure_message_helper
|
|
|
|
end
|
|
|
|
|
|
|
|
def negative_failure_message
|
|
|
|
failure_message_helper(' not')
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def failure_message_helper(negated = '')
|
2018-01-08 15:23:54 -05:00
|
|
|
verb = @expected_title.is_a?(Regexp) ? 'match' : 'include'
|
2014-02-16 12:13:58 -05:00
|
|
|
"expected #{@actual_title.inspect}#{negated} to #{verb} #{@expected_title.inspect}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def valid_keys
|
2018-01-08 15:23:54 -05:00
|
|
|
%i[wait exact]
|
2014-02-16 12:13:58 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|