Sha256: 0914dc4f037b22f4f3e4562ecd49f53f9f3d8c2a614ec95b9ce0677c572eb4a4

Contents?: true

Size: 1.1 KB

Versions: 13

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

require 'rspec_html/matchers/base'
require 'rspec_html/matchers/contain_text'
require 'rspec_html/matchers/contain_tag'
require 'rspec_html/matchers/match_text'

module RSpecHTML
  # Provides matchers for identifying elements and text within a DOM element.
  module Matchers
    extend RSpec::Matchers::DSL
    extend RSpec::Matchers::DSL::Macros

    # rubocop:disable Metrics/MethodLength
    def self.define_matcher(name, class_)
      matcher name do |expected, options|
        rspec_html_matcher = class_.new(expected, options || {})
        match do |actual|
          rspec_html_matcher
            .save_actual(actual)
            .match(actual)
            .tap { @actual = rspec_html_matcher.rspec_actual }
        end
        description { rspec_html_matcher.description }
        failure_message { rspec_html_matcher.failure_message }
        diffable if class_.diffable?
      end
    end
    # rubocop:enable Metrics/MethodLength

    define_matcher(:contain_text, ContainText)
    define_matcher(:contain_tag, ContainTag)
    define_matcher(:match_text, MatchText)
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rspec-html-0.2.20 lib/rspec_html/matchers.rb
rspec-html-0.2.19 lib/rspec_html/matchers.rb
rspec-html-0.2.18 lib/rspec_html/matchers.rb
rspec-html-0.2.17 lib/rspec_html/matchers.rb
rspec-html-0.2.16 lib/rspec_html/matchers.rb
rspec-html-0.2.15 lib/rspec_html/matchers.rb
rspec-html-0.2.14 lib/rspec_html/matchers.rb
rspec-html-0.2.13 lib/rspec_html/matchers.rb
rspec-html-0.2.12 lib/rspec_html/matchers.rb
rspec-html-0.2.11 lib/rspec_html/matchers.rb
rspec-html-0.2.10 lib/rspec_html/matchers.rb
rspec-html-0.2.9 lib/rspec_html/matchers.rb
rspec-html-0.2.8 lib/rspec_html/matchers.rb