module Capybara::BootstrapDatepicker

Adds datepicker interaction facilities to {Capybara}

Constants

VERSION

the current version of the gem

Public Instance Methods

select_bootstrap_date(date_input, value) click to toggle source

Selects a date by simulating human interaction with the datepicker @param (see select_simple_date)

# File lib/capybara-bootstrap-datepicker.rb, line 41
def select_bootstrap_date(date_input, value)
  date_input.click

  picker = Picker.new

  picker.goto_decade_panel
  picker.navigate_through_decades value.year

  picker.find_year(value.year).click
  picker.find_month(value.month).click
  picker.find_day(value.day).click

  fail if Date.parse(date_input.value) != value
end
select_date(value, datepicker: :bootstrap, format: nil, from: nil, xpath: nil, **args) click to toggle source

Selects a date by simulating human interaction with the datepicker or filling the input field @param value [#to_date, String] any object that responds to ‘#to_date` or a parsable date string @param datepicker [:bootstrap, :simple] the datepicker to use (are supported: bootstrap or input field) @param format [String, nil] a valid date format used to format value @param from [String, nil] the path to input field (required if `xpath` is nil) @param xpath [String, nil] the xpath to input field (required if `from` is nil) @param args [Hash] extra args to find the input field

# File lib/capybara-bootstrap-datepicker.rb, line 13
def select_date(value, datepicker: :bootstrap, format: nil, from: nil, xpath: nil, **args)
  fail "Must pass a hash containing 'from' or 'xpath'" if from.nil? && xpath.nil?

  value = value.respond_to?(:to_date) ? value.to_date : Date.parse(value)
  date_input = xpath ? find(:xpath, xpath, **args) : find_field(from, **args)

  case datepicker
  when :bootstrap
    select_bootstrap_date date_input, value
  else
    select_simple_date date_input, value, format
  end

  first(:xpath, '//body').click
end
select_simple_date(date_input, value, format = nil) click to toggle source

Selects a date by filling the input field @param date_input the input field @param value [Date] the date to set @param format [String, nil] a valid date format used to format value

# File lib/capybara-bootstrap-datepicker.rb, line 33
def select_simple_date(date_input, value, format = nil)
  value = value.strftime format unless format.nil?

  date_input.set "#{value}\e"
end