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

#default_document_classObject



68
69
70
# File 'lib/ae_page_objects/document_query.rb', line 68

def default_document_class
  conditions.first.document_class
end

#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

#permitted_types_dumpObject



72
73
74
# File 'lib/ae_page_objects/document_query.rb', line 72

def permitted_types_dump
  conditions.map(&:document_class).map(&:name).inspect
end