From ee041e575d2a70eed5038e6ccc16b94343d22bad Mon Sep 17 00:00:00 2001 From: Carl Porth Date: Fri, 19 Feb 2010 18:12:19 -0800 Subject: [PATCH 1/2] Fixed multiple select value for celerity driver --- lib/capybara/driver/celerity_driver.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/capybara/driver/celerity_driver.rb b/lib/capybara/driver/celerity_driver.rb index f58c62da..eda6fba3 100644 --- a/lib/capybara/driver/celerity_driver.rb +++ b/lib/capybara/driver/celerity_driver.rb @@ -7,6 +7,8 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base def [](name) value = if name.to_sym == :class node.class_name + elsif node.type == 'select-multiple' + return node.selected_options else node.send(name.to_sym) end From dd892846e317383607541eb6792194a75d56339e Mon Sep 17 00:00:00 2001 From: Carl Porth Date: Fri, 19 Feb 2010 18:13:23 -0800 Subject: [PATCH 2/2] Added unselect for celerity driver --- lib/capybara/driver/celerity_driver.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/capybara/driver/celerity_driver.rb b/lib/capybara/driver/celerity_driver.rb index eda6fba3..82ab3915 100644 --- a/lib/capybara/driver/celerity_driver.rb +++ b/lib/capybara/driver/celerity_driver.rb @@ -26,6 +26,23 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}" end + def unselect(option) + unless node.multiple? + raise Capybara::UnselectNotAllowed, "Cannot unselect option '#{option}' from single select box." + end + + # FIXME: couldn't find a clean way to unselect, so clear and reselect + selected_options = node.selected_options + if unselect_option = selected_options.detect { |value| value == option } || + selected_options.detect { |value| value.index(option) } + node.clear + (selected_options - [unselect_option]).each { |value| node.select_value(value) } + else + options = all(:xpath, "//option").map { |o| "'#{o.text}'" }.join(', ') + raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}" + end + end + def click node.click end