Sha256: 45695761306f063de4969c0dc22234d133aedb57aad0bf39e6a0d008e3c20756

Contents?: true

Size: 1.99 KB

Versions: 19

Compression:

Stored size: 1.99 KB

Contents

module Webrat
  module Selenium
    module Matchers
  
      class HaveTag < HaveSelector #:nodoc:
        # ==== Returns
        # String:: The failure message.
        def failure_message
          "expected following output to contain a #{tag_inspect} tag:\n#{@document}"
        end
  
        # ==== Returns
        # String:: The failure message to be displayed in negative matches.
        def negative_failure_message
          "expected following output to omit a #{tag_inspect}:\n#{@document}"
        end
  
        def tag_inspect
          options = @expected.last.dup
          content = options.delete(:content)
  
          html = "<#{@expected.first}"
          options.each do |k,v|
            html << " #{k}='#{v}'"
          end
  
          if content
            html << ">#{content}</#{@expected.first}>"
          else
            html << "/>"
          end
  
          html
        end
  
        def query
          options  = @expected.last.dup
          selector = @expected.first.to_s
  
          selector << ":contains('#{options.delete(:content)}')" if options[:content]
  
          options.each do |key, value|
            selector << "[#{key}='#{value}']"
          end
  
          Nokogiri::CSS.parse(selector).map { |ast| ast.to_xpath }
        end
      end
  
      def have_tag(name, attributes = {}, &block)
        HaveTag.new([name, attributes], &block)
      end
      
      alias_method :match_tag, :have_tag
      
      # Asserts that the body of the response contains
      # the supplied tag with the associated selectors
      def assert_have_tag(name, attributes = {})
        ht = HaveTag.new([name, attributes])
        assert ht.matches?(response), ht.failure_message
      end
      
      # Asserts that the body of the response
      # does not contain the supplied string or regepx
      def assert_have_no_tag(name, attributes = {})
        ht = HaveTag.new([name, attributes])
        assert !ht.matches?(response), ht.negative_failure_message
      end
  
    end
  end
end

Version data entries

19 entries across 19 versions & 7 rubygems

Version Path
diabolo-webrat-0.4.2 lib/webrat/selenium/matchers/have_tag.rb
jferris-webrat-0.4.3.0.1238640835 lib/webrat/selenium/matchers/have_tag.rb
jferris-webrat-0.4.3 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.2.1 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.2.2 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.2.3 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.2.4 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.2.5 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.2 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.3.2 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.3.3 lib/webrat/selenium/matchers/have_tag.rb
jwilger-webrat-0.4.3.4 lib/webrat/selenium/matchers/have_tag.rb
mattwynne-cucover-0.1.0 examples/self_test/rails/vendor/gems/webrat-0.4.4/lib/webrat/selenium/matchers/have_tag.rb
mattwynne-cucover-0.1.1 examples/self_test/rails/vendor/gems/webrat-0.4.4/lib/webrat/selenium/matchers/have_tag.rb
mmurphy-webrat-0.4.4 lib/webrat/selenium/matchers/have_tag.rb
integrity-0.1.9 vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb
webrat-0.4.2 lib/webrat/selenium/matchers/have_tag.rb
webrat-0.4.4 lib/webrat/selenium/matchers/have_tag.rb
webrat-0.4.3 lib/webrat/selenium/matchers/have_tag.rb