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 12 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 24 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 w = options.fetch(:wait, nil) w = default if w.nil? w || 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 36 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 61 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 49 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 65 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 16 def session_options @session_options || Capybara.session_options end
wait()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 20 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 75 def count_message message = "".dup 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
count_specified?()
click to toggle source
# File lib/capybara/queries/base_query.rb, line 71 def count_specified? COUNT_KEYS.any? { |k| options.key? k } end