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