class Capybara::Queries::BaseQuery
Constants
- COUNT_KEYS
Attributes
options[R]
session_options[W]
Public Class Methods
new(options)
click to toggle source
# File lib/capybara/queries/base_query.rb, line 10 def initialize(options) @session_options = options.delete(:session_options) end
wait(options, default=Capybara.default_max_wait_time)
click to toggle source
# File lib/capybara/queries/base_query.rb, line 22 def self.wait(options, default=Capybara.default_max_wait_time) options.fetch(:wait, default) || 0 end
Public Instance Methods
expects_none?()
click to toggle source
Checks if a count of 0 is valid for the query Returns false if query does not have any count options specified.
# File lib/capybara/queries/base_query.rb, line 31 def expects_none? if COUNT_KEYS.any? { |k| options.has_key? k } matches_count?(0) else false end end
failure_message()
click to toggle source
Generates a failure message from the query description and count options.
# File lib/capybara/queries/base_query.rb, line 60 def failure_message String.new("expected to find #{description}") << count_message end
matches_count?(count)
click to toggle source
Checks if the given count matches the query count options. Defaults to true if no count options are specified. If multiple count options exist, it tests that all conditions are met; however, if :count is specified, all other options are ignored.
@param [Integer] count The actual number. Should be coercible via Integer()
# File lib/capybara/queries/base_query.rb, line 48 def matches_count?(count) return (Integer(options[:count]) == count) if options[:count] return false if options[:maximum] && (Integer(options[:maximum]) < count) return false if options[:minimum] && (Integer(options[:minimum]) > count) return false if options[:between] && !(options[:between] === count) return true end
negative_failure_message()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 64 def negative_failure_message String.new("expected not to find #{description}") << count_message end
session_options()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 14 def session_options @session_options || Capybara.session_options end
wait()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 18 def wait self.class.wait(options, session_options.default_max_wait_time) end
Private Instance Methods
assert_valid_keys()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 84 def assert_valid_keys invalid_keys = @options.keys - valid_keys unless invalid_keys.empty? invalid_names = invalid_keys.map(&:inspect).join(", ") valid_names = valid_keys.map(&:inspect).join(", ") raise ArgumentError, "invalid keys #{invalid_names}, should be one of #{valid_names}" end end
count_message()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 70 def count_message message = String.new() if options[:count] message << " #{options[:count]} #{Capybara::Helpers.declension('time', 'times', options[:count])}" elsif options[:between] message << " between #{options[:between].first} and #{options[:between].last} times" elsif options[:maximum] message << " at most #{options[:maximum]} #{Capybara::Helpers.declension('time', 'times', options[:maximum])}" elsif options[:minimum] message << " at least #{options[:minimum]} #{Capybara::Helpers.declension('time', 'times', options[:minimum])}" end message end