Sha256: 7d4afe6a64e5b14a76114d313b05d60940b28bfb919b39c37edc67fcf4b5430e

Contents?: true

Size: 1.11 KB

Versions: 6

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require 'rspec_html/matchers/base'
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, expected_count: @expected_count, expected_count_type: @expected_count_type)
            .tap { @actual = rspec_html_matcher.rspec_actual }
        end
        description { rspec_html_matcher.description }

        include Countable

        failure_message { rspec_html_matcher.failure_message }
        diffable if class_.diffable?
      end
    end
    # rubocop:enable Metrics/MethodLength

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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rspec-html-0.3.5 lib/rspec_html/matchers.rb
rspec-html-0.3.4 lib/rspec_html/matchers.rb
rspec-html-0.3.3 lib/rspec_html/matchers.rb
rspec-html-0.3.2 lib/rspec_html/matchers.rb
rspec-html-0.3.1 lib/rspec_html/matchers.rb
rspec-html-0.3.0 lib/rspec_html/matchers.rb