class Capybara::Queries::BaseQuery
def self.wait(options, default = Capybara.default_max_wait_time)
def self.wait(options, default = Capybara.default_max_wait_time) # if no value or nil for the :wait option is passed it should default to the default wait = options.fetch(:wait, nil) wait = default if wait.nil? wait || 0 end
def assert_valid_keys
def assert_valid_keys invalid_keys = @options.keys - valid_keys return if 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
def count_message
def count_message message = +'' count, between, maximum, minimum = options.values_at(:count, :between, :maximum, :minimum) if count message << " #{count} #{Capybara::Helpers.declension('time', 'times', count)}" elsif between message << " between #{between.first} and #{between.last} times" elsif maximum message << " at most #{maximum} #{Capybara::Helpers.declension('time', 'times', maximum)}" elsif minimum message << " at least #{minimum} #{Capybara::Helpers.declension('time', 'times', minimum)}" end message end
def count_specified?
def count_specified? COUNT_KEYS.any? { |key| options.key? key } end
def expects_none?
Returns false if query does not have any count options specified.
Checks if a count of 0 is valid for the query
#
def expects_none? count_specified? ? matches_count?(0) : false end
def failure_message
Generates a failure message from the query description and count options.
#
def failure_message +"expected to find #{description}" << count_message end
def initialize(options)
def initialize(options) @session_options = options.delete(:session_options) end
def matches_count?(count)
-
count
(Integer
) -- The actual number. Should be coercible via Integer()
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].include?(count) true end
def negative_failure_message
def negative_failure_message +"expected not to find #{description}" << count_message end
def session_options
def session_options @session_options || Capybara.session_options end
def wait
def wait self.class.wait(options, session_options.default_max_wait_time) end