Sha256: 283e21630a2bc218622b8e13af387568d60dcad5f635e28f1c1c0e6093986e7f

Contents?: true

Size: 1.76 KB

Versions: 15

Compression:

Stored size: 1.76 KB

Contents

module Webrat
  module Matchers

    class HasContent #:nodoc:
      def initialize(content)
        @content = content
      end

      def matches?(stringlike)
        @document = Webrat::XML.document(stringlike)
        @element = @document.inner_text

        case @content
        when String
          @element.gsub(/\s+/, ' ').include?(@content)
        when Regexp
          @element.match(@content)
        end
      end

      # ==== Returns
      # String:: The failure message.
      def failure_message
        "expected the following element's content to #{content_message}:\n#{squeeze_space(@element)}"
      end

      # ==== Returns
      # String:: The failure message to be displayed in negative matches.
      def negative_failure_message
        "expected the following element's content to not #{content_message}:\n#{squeeze_space(@element)}"
      end

      def squeeze_space(inner_text)
        inner_text.gsub(/^\s*$/, "").squeeze("\n")
      end

      def content_message
        case @content
        when String
          "include \"#{@content}\""
        when Regexp
          "match #{@content.inspect}"
        end
      end
    end

    # Matches the contents of an HTML document with
    # whatever string is supplied
    def contain(content)
      HasContent.new(content)
    end

    # Asserts that the body of the response contain
    # the supplied string or regexp
    def assert_contain(content)
      hc = HasContent.new(content)
      assert hc.matches?(response_body), hc.failure_message
    end

    # Asserts that the body of the response
    # does not contain the supplied string or regepx
    def assert_not_contain(content)
      hc = HasContent.new(content)
      assert !hc.matches?(response_body), hc.negative_failure_message
    end

  end
end

Version data entries

15 entries across 15 versions & 7 rubygems

Version Path
radiant-1.0.0 ruby-debug/ruby/1.8/gems/webrat-0.7.3/lib/webrat/core/matchers/have_content.rb
webrat-0.7.3 lib/webrat/core/matchers/have_content.rb
jbd-webrat-0.7.2.rails3 lib/webrat/core/matchers/have_content.rb
webrat-0.7.2 lib/webrat/core/matchers/have_content.rb
webrat-0.7.2.beta.2 lib/webrat/core/matchers/have_content.rb
mutle-webrat-0.7.2.beta.1 lib/webrat/core/matchers/have_content.rb
webrat-0.7.2.beta.1 lib/webrat/core/matchers/have_content.rb
honkster-webrat-0.7.1.2 lib/webrat/core/matchers/have_content.rb
honkster-webrat-0.7.1.1 lib/webrat/core/matchers/have_content.rb
revo-webrat-0.7.0.1 lib/webrat/core/matchers/have_content.rb
webrat-0.7.1 lib/webrat/core/matchers/have_content.rb
davidtrogers-webrat-0.7.0 lib/webrat/core/matchers/have_content.rb
revo-webrat-0.7.0 lib/webrat/core/matchers/have_content.rb
revo-webrat-0.7.1.pre lib/webrat/core/matchers/have_content.rb
webrat-0.7.0 lib/webrat/core/matchers/have_content.rb