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 11 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 23 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
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 35 def expects_none? count_specified? ? matches_count?(0) : false 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 +"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].include?(count) true end
negative_failure_message()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 64 def negative_failure_message +"expected not to find #{description}" << count_message end
session_options()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 15 def session_options @session_options || Capybara.session_options end
wait()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 19 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 89 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
count_message()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 74 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
count_specified?()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 70 def count_specified? COUNT_KEYS.any? { |key| options.key? key } end