Module: Testable::DSL::ClassMethods

Defined in:
lib/testable/capybara/dsl.rb

Instance Method Summary collapse

Instance Method Details

#component(name, klass, selector, options = {}) ⇒ Object

Defines a component that wraps an HTML fragment.



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/testable/capybara/dsl.rb', line 36

def component(name, klass, selector, options = {})
  unless klass < Node
    raise ArgumentError, 'Must be given a subclass of Node'
  end

  define_method(name.to_s) do
    klass.new(node: @node.find(selector, options))
  end

  define_helpers(name, selector)
end

#components(name, klass, selector, options = {}) ⇒ Object

Defines a collection of components that wrap HTML fragments.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/testable/capybara/dsl.rb', line 49

def components(name, klass, selector, options = {})
  unless klass < Node
    raise ArgumentError, 'Must be given a subclass of Node'
  end

  options = { minimum: 1 }.merge(options)

  define_method(name.to_s) do
    @node.all(selector, options).map do |node|
      klass.new(node: node)
    end
  end

  define_helpers(name, selector)
end

#element(name, selector, options = {}) ⇒ Object

Defines an element that wraps an HTML fragment.



14
15
16
17
18
19
20
# File 'lib/testable/capybara/dsl.rb', line 14

def element(name, selector, options = {})
  define_method(name.to_s) do
    Node.new(node: @node.find(selector, options))
  end

  define_helpers(name, selector)
end

#elements(name, selector, options = {}) ⇒ Object

Defines a collection of elements that wrap HTML fragments.



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/testable/capybara/dsl.rb', line 23

def elements(name, selector, options = {})
  options = { minimum: 1 }.merge(options)

  define_method(name.to_s) do
    @node.all(selector, options).map do |node|
      Node.new(node: node)
    end
  end

  define_helpers(name, selector)
end