Class: AePageObjects::DocumentQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/ae_page_objects/document_query.rb

Defined Under Namespace

Classes: Condition

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*document_classes, &block) ⇒ DocumentQuery

Returns a new instance of DocumentQuery.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/ae_page_objects/document_query.rb', line 31

def initialize(*document_classes, &block)
  @conditions = []

  if document_classes.empty?
    raise ArgumentError, "block expected" if block.nil?
    block.call(self)

    raise ArgumentError, "conditions expected" if @conditions.empty?
  else

    all_documents = document_classes.all? do |document_class|
      document_class.is_a?(Class) && document_class < Document
    end

    if all_documents
      if document_classes.size == 1
        matches(document_classes.first, {}, &block)
      else
        raise ArgumentError, "block unexpected for multiple documents" unless block.nil?

        document_classes.each do |document_class|
          matches(document_class)
        end
      end
    else
      raise ArgumentError, "Expected (Document, document_options)" unless document_classes.size == 2
      raise ArgumentError, "Expected (Document, document_options)" unless (document_classes.first < Document) && document_classes.last.is_a?(Hash)

      matches(document_classes.first, document_classes.last, &block)
    end
  end
end

Instance Attribute Details

#conditionsObject (readonly)

Returns the value of attribute conditions.



29
30
31
# File 'lib/ae_page_objects/document_query.rb', line 29

def conditions
  @conditions
end

Instance Method Details

#matches(document_class, conditions = {}, &block_condition) ⇒ Object



64
65
66
# File 'lib/ae_page_objects/document_query.rb', line 64

def matches(document_class, conditions = {}, &block_condition)
  @conditions << Condition.new(document_class, conditions, &block_condition)
end