summaryrefslogtreecommitdiff
path: root/qa/qa/support/matchers/have_matcher.rb
blob: 47d2d246460a995dd9c558b751a524f6e364995b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true

module QA
  module Support
    module Matchers
      module HaveMatcher
        PREDICATE_TARGETS = %w[
          element
          file_content
          assignee
          child_pipeline
          content
          design
          file
          issue
          job
          package
          pipeline
          related_issue_item
          snippet_description
          tag
          label
        ].each do |predicate|
          RSpec::Matchers.define "have_#{predicate}" do |*args, **kwargs|
            match do |page_object|
              page_object.public_send("has_#{predicate}?", *args, **kwargs)
            end

            match_when_negated do |page_object|
              page_object.public_send("has_no_#{predicate}?", *args, **kwargs)
            end
          end
        end
      end
    end
  end
end