Sha256: 745ae028a52c8b25601d7e27439b78939ca443c4463116427a88790fd05160f6

Contents?: true

Size: 1.01 KB

Versions: 5

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

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

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)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rspec-html-0.2.7 lib/rspec_html/matchers.rb
rspec-html-0.2.6 lib/rspec_html/matchers.rb
rspec-html-0.2.5 lib/rspec_html/matchers.rb
rspec-html-0.2.4 lib/rspec_html/matchers.rb
rspec-html-0.2.3 lib/rspec_html/matchers.rb