Module: Capybara::Helpers

### Home Classes Methods

### In Files

- lib/capybara/helpers.rb

### Methods

- #declension
- #expects_none?
- #failure_message
- #inject_asset_host
- #matches_count?
- #normalize_whitespace
- #to_regexp

### Files

- another_test_file.txt
- test_file.txt

### Class/Module Index

Quicksearch

- Capybara
- Capybara::Ambiguous
- Capybara::CapybaraError
- Capybara::DSL
- Capybara::Driver
- Capybara::Driver::Base
- Capybara::Driver::Node
- Capybara::DriverNotFoundError
- Capybara::ElementNotFound
- Capybara::ExpectationNotMet
- Capybara::Features
- Capybara::FileNotFound
- Capybara::FrozenInTime
- Capybara::Helpers
- Capybara::InfiniteRedirectError
- Capybara::ModalNotFound
- Capybara::Node
- Capybara::Node::Actions
- Capybara::Node::Base
- Capybara::Node::Document
- Capybara::Node::DocumentMatchers
- Capybara::Node::Element
- Capybara::Node::Finders
- Capybara::Node::Matchers
- Capybara::Node::Simple
- Capybara::NotSupportedByDriverError
- Capybara::Queries
- Capybara::Queries::BaseQuery
- Capybara::Queries::TextQuery
- Capybara::Queries::TitleQuery
- Capybara::Query
- Capybara::RSpecMatchers
- Capybara::RSpecMatchers::BecomeClosed
- Capybara::RSpecMatchers::HaveSelector
- Capybara::RSpecMatchers::HaveText
- Capybara::RSpecMatchers::HaveTitle
- Capybara::RSpecMatchers::Matcher
- Capybara::RackTest
- Capybara::RackTest::Browser
- Capybara::RackTest::CSSHandlers
- Capybara::RackTest::Driver
- Capybara::RackTest::Form
- Capybara::RackTest::Form::NilUploadedFile
- Capybara::RackTest::Node
- Capybara::ReadOnlyElementError
- Capybara::Result
- Capybara::ScopeError
- Capybara::Selector
- Capybara::Selector::Filter
- Capybara::Selenium
- Capybara::Selenium::Driver
- Capybara::Selenium::Node
- Capybara::Server
- Capybara::Server::Middleware
- Capybara::Session
- Capybara::SpecHelper
- Capybara::UnselectNotAllowed
- Capybara::Window
- Capybara::WindowError
- TestApp
- TestApp::TestAppError
- Object

No matching classes.

# Capybara::Helpers

@api private

### Public Instance Methods

declension(singular, plural, count) click to toggle source

A poor man's `pluralize`. Given two declensions, one singular and one plural, as well as a count, this will pick the correct declension. This way we can generate grammatically correct error message.

@param [String] singular The singular form of the word @param [String] plural The plural form of the word @param [Integer] count The number of items

    # File lib/capybara/helpers.rb, line 119
    def declension(singular, plural, count)
      if count == 1
        singular
      else
        plural
      end
    end

expects_none?(options={}) click to toggle source

Checks if a count of 0 is valid for the given options hash. Returns false if options hash does not specify any count options.

    # File lib/capybara/helpers.rb, line 76
    def expects_none?(options={})
      if [:count, :maximum, :minimum, :between].any? { |k| options.has_key? k }
        matches_count?(0,options)
      else
        false
      end
    end

failure_message(description, options={}) click to toggle source

Generates a failure message given a description of the query and count options.

@param [String] description Description of a query @option [Range] between Count should have been within the given range @option [Integer] count Count should have been exactly this @option [Integer] maximum Count should have been smaller than or equal to this value @option [Integer] minimum Count should have been larger than or equal to this value

    # File lib/capybara/helpers.rb, line 95
    def failure_message(description, options={})
      message = "expected to find #{description}"
      if options[:count]
        message << " #{options[:count]} #{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]} #{declension('time', 'times', options[:maximum])}"
      elsif options[:minimum]
        message << " at least #{options[:minimum]} #{declension('time', 'times', options[:minimum])}"
      end
      message
    end

inject_asset_host(html) click to toggle source

Injects a `<base>` tag into the given HTML code, pointing to `Capybara.asset_host`.

@param [String] html HTML code to inject into @return [String] The modified HTML code

    # File lib/capybara/helpers.rb, line 41
    def inject_asset_host(html)
      if Capybara.asset_host && Nokogiri::HTML(html).css("base").empty?
         match = html.match(/<head[^<]*?>/)
          html.clone.insert match.end(0), "<base href='#{Capybara.asset_host}' />"
      else
        html
      end
    end

matches_count?(count, options={}) click to toggle source

Checks if the given count matches the given count options. Defaults to true if no options are specified. If multiple options are provided, it tests that all conditions are met; however, if :count is supplied, all other options are ignored.

@param [Integer] count The actual number. Should be coercible via Integer() @option [Range] between Count must be within the given range @option [Integer] count Count must be exactly this @option [Integer] maximum Count must be smaller than or equal to this value @option [Integer] minimum Count must be larger than or equal to this value

    # File lib/capybara/helpers.rb, line 63
    def matches_count?(count, options={})
      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

normalize_whitespace(text) click to toggle source

Normalizes whitespace space by stripping leading and trailing whitespace and replacing sequences of whitespace characters with a single space.

@param [String] text Text to normalize @return [String] Normalized text

    # File lib/capybara/helpers.rb, line 17
    def normalize_whitespace(text)
      text.to_s.gsub(/[[:space:]]+/, ' ').strip
    end

to_regexp(text) click to toggle source

Escapes any characters that would have special meaning in a regexp if text is not a regexp

@param [String] text Text to escape @return [String] Escaped text

    # File lib/capybara/helpers.rb, line 29
    def to_regexp(text)
      text.is_a?(Regexp) ? text : Regexp.new(Regexp.escape(normalize_whitespace(text)))
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.