class Capybara::Queries::BaseQuery
Constants
- COUNT_KEYS
Attributes
Public Class Methods
Source
# File lib/capybara/queries/base_query.rb, line 12 def initialize(options) @session_options = options.delete(:session_options) end
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 wait = options.fetch(:wait, nil) wait = default if wait.nil? wait || 0 end
Public Instance Methods
Source
# File lib/capybara/queries/base_query.rb, line 36 def expects_none? count_specified? ? matches_count?(0) : false end
Checks if a count of 0 is valid for the query Returns false if query does not have any count options specified.
Source
# File lib/capybara/queries/base_query.rb, line 62 def failure_message +"expected to find #{description}" << count_message end
Generates a failure message from the query description and count options.
Source
# 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
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()
Source
# File lib/capybara/queries/base_query.rb, line 66 def negative_failure_message +"expected not to find #{description}" << count_message end
Source
# File lib/capybara/queries/base_query.rb, line 16 def session_options @session_options || Capybara.session_options end
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
Source
# File lib/capybara/queries/base_query.rb, line 96 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 option(s) #{invalid_names}, should be one of #{valid_names}" end
Source
# File lib/capybara/queries/base_query.rb, line 76 def count_message message = +'' count, between, maximum, minimum = options.values_at(:count, :between, :maximum, :minimum) if count message << " #{occurrences count}" elsif between message << " between #{between.begin ? between.first : 1} and " \ "#{between.end ? between.last : 'infinite'} times" elsif maximum message << " at most #{occurrences maximum}" elsif minimum message << " at least #{occurrences minimum}" end message end
Source
# File lib/capybara/queries/base_query.rb, line 72 def count_specified? COUNT_KEYS.any? { |key| options.key? key } end
Source
# File lib/capybara/queries/base_query.rb, line 92 def occurrences(count) "#{count} #{Capybara::Helpers.declension('time', 'times', count)}" end