Module: Capybara::Pagemap::Select

Included in:
Capybara::Pagemap
Defined in:
lib/capybara/pagemap/select.rb

Overview

Select build methods for selectable DOM elements

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#select_getter_build_and_send(method_name, _args, _block) ⇒ Object



43
44
45
46
47
# File 'lib/capybara/pagemap/select.rb', line 43

def select_getter_build_and_send(method_name, _args, _block)
  return unless self.class.node_definitions[method_name.to_sym]
  build_select_getter(method_name)
  send(method_name)
end

#select_input_build_and_send(method_name, _args, _block) ⇒ Object



25
26
27
28
29
# File 'lib/capybara/pagemap/select.rb', line 25

def select_input_build_and_send(method_name, _args, _block)
  return unless /(?<key>.*)_input$/ =~ method_name && self.class.node_definitions[key.to_sym]
  build_select_input(key)
  send(method_name)
end

#select_method_missing(method_name, args, block) ⇒ Object



18
19
20
21
22
23
# File 'lib/capybara/pagemap/select.rb', line 18

def select_method_missing(method_name, args, block)
  select_input_build_and_send(method_name, args, block) ||
    select_opt_build_and_send(method_name, args, block) ||
    select_value_build_and_send(method_name, args, block) ||
    select_getter_build_and_send(method_name, args, block)
end

#select_opt_build_and_send(method_name, args, _block) ⇒ Object



31
32
33
34
35
# File 'lib/capybara/pagemap/select.rb', line 31

def select_opt_build_and_send(method_name, args, _block)
  return unless /(?<key>.*)_select$/ =~ method_name && self.class.node_definitions[key.to_sym] && self.class.node_definitions[key.to_sym][:type] == :select
  build_select_opt(key)
  send(method_name, args.first)
end

#select_respond_to_missing?(method_name, _include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
52
53
54
# File 'lib/capybara/pagemap/select.rb', line 49

def select_respond_to_missing?(method_name, _include_private = false)
  /(.*)_input$/ =~ method_name ||
    /(.*)_select$/ =~ method_name ||
    /(.*)_select_by$/ =~ method_name ||
    self.class.node_definitions[(Regexp.last_match(1) || method_name).to_sym]
end

#select_validator_for(node) ⇒ Object



14
15
16
# File 'lib/capybara/pagemap/select.rb', line 14

def select_validator_for(node)
  !send("#{node}_select").nil?
end

#select_value_build_and_send(method_name, args, _block) ⇒ Object



37
38
39
40
41
# File 'lib/capybara/pagemap/select.rb', line 37

def select_value_build_and_send(method_name, args, _block)
  return unless /(?<key>.*)_select_by$/ =~ method_name && self.class.node_definitions[key.to_sym] && self.class.node_definitions[key.to_sym][:type] == :select
  build_select_by(key)
  send(method_name, args.first)
end