Sha256: 767528f001375fea3d0af6d5d89e71440cb168c45a93b1117f721dafdd128348

Contents?: true

Size: 1.81 KB

Versions: 18

Compression:

Stored size: 1.81 KB

Contents

module Webrat
  module Matchers
  
    class HasContent #:nodoc:
      def initialize(content)
        @content = content
      end
      
      def matches?(stringlike)
        if Webrat.configuration.parse_with_nokogiri?
          @document = Webrat.nokogiri_document(stringlike)
        else
          @document = Webrat.hpricot_document(stringlike)
        end
        
        @element = Webrat::XML.inner_text(@document)
      
        case @content
        when String
          @element.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#{@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#{@element}"
      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

18 entries across 18 versions & 4 rubygems

Version Path
adva-0.3.2 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.3.1 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.3.0 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.2.4 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.2.3 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.2.2 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.2.1 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.2.0 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.1.4 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.1.3 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.1.2 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.1.1 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.1.0 test/webrat/lib/webrat/core/matchers/have_content.rb
adva-0.0.1 test/webrat/lib/webrat/core/matchers/have_content.rb
auxesis-webrat-0.4.1 lib/webrat/core/matchers/have_content.rb
brynary-webrat-0.4.0 lib/webrat/core/matchers/have_content.rb
webrat-0.4.0 lib/webrat/core/matchers/have_content.rb
webrat-0.4.1 lib/webrat/core/matchers/have_content.rb