Module: WatirPump::Components::CheckboxGroup
- Included in:
- WatirPump::Component
- Defined in:
- lib/watir_pump/components/checkbox_group.rb
Instance Method Summary collapse
- #checkbox_accessor(name, *args) ⇒ Object (also: #checkbox_group)
-
#checkbox_reader(name, *args) ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#checkbox_writer(name, *args) ⇒ Object
rubocop:disable Metrics/AbcSize.
Instance Method Details
#checkbox_accessor(name, *args) ⇒ Object Also known as: checkbox_group
35 36 37 38 |
# File 'lib/watir_pump/components/checkbox_group.rb', line 35 def checkbox_accessor(name, *args) checkbox_reader(name, *args) checkbox_writer(name, *args) end |
#checkbox_reader(name, *args) ⇒ Object
rubocop:disable Metrics/AbcSize
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/watir_pump/components/checkbox_group.rb', line 23 def checkbox_reader(name, *args) # rubocop:disable Metrics/AbcSize form_field_readers << name define_method name do selected = find_element(:checkboxes, args).select(&:set?) return [] unless selected if selected.first&.parent&.tag_name == 'label' return selected.map { |el| el.parent.text } end selected.map { |el| root.label(for: el.id).text } end end |
#checkbox_writer(name, *args) ⇒ Object
rubocop:disable Metrics/AbcSize
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/watir_pump/components/checkbox_group.rb', line 6 def checkbox_writer(name, *args) # rubocop:disable Metrics/AbcSize form_field_writers << name define_method "#{name}=" do |values| values = Array(values) # <label>value<input /></label> list = find_element(:checkboxes, args) values.each do |value| if list.first.parent.tag_name == 'label' list.find { |el| el.parent.text == value }.set else # <label for='a'>value</label><input id='a' /> list.find { |el| el.id == root.label(text: value).for }.set end end end end |