lib/formulaic/inputs/string_input.rb in formulaic-0.3.0 vs lib/formulaic/inputs/string_input.rb in formulaic-0.4.0
- old
+ new
@@ -1,23 +1,42 @@
module Formulaic
module Inputs
class StringInput < Input
def fill
- if page.has_selector?(:fillable_field, label)
+ if page.has_selector?(:fillable_field, label, wait: Formulaic.default_wait_time)
fill_in(label, with: value)
- elsif page.has_selector?(:radio_button, label)
+ elsif page.has_selector?(:radio_button, label, wait: Formulaic.default_wait_time)
choose(value)
- elsif has_option_in_select?(value, label)
- select(value, from: label)
+ elsif has_option_in_select?(translate_option(value), label)
+ select(translate_option(value), from: label)
else
raise Formulaic::InputNotFound.new(%[Unable to find input "#{label}".])
end
end
def has_option_in_select?(option, select)
- find(:select, select).has_selector?(:option, option)
+ element = find(:select, select)
+ if ! element.has_selector?(:option, option, wait: Formulaic.default_wait_time)
+ raise Formulaic::OptionForSelectInputNotFound.new(%[Unable to find option with text matching "#{option}".])
+ end
+ true
rescue Capybara::ElementNotFound
false
+ end
+
+ private
+
+ def translate_option(option)
+ I18n.t(lookup_paths_for_option.first,
+ scope: :'simple_form.options', default: lookup_paths_for_option)
+ end
+
+ def lookup_paths_for_option
+ [
+ :"#{label.model_name}.#{label.attribute}.#{value}",
+ :"defaults.#{label.attribute}.#{value}",
+ value.to_s,
+ ]
end
end
end
end