From c2320a4f95f976b076b47048721e9994c7f71c7b Mon Sep 17 00:00:00 2001 From: Jonas Nicklas Date: Wed, 11 Nov 2009 21:48:33 +0100 Subject: [PATCH] Hidden fields Culerity has problems with this. --- lib/webcat/driver/rack_test_driver.rb | 2 +- lib/webcat/session.rb | 7 ++++++- spec/session_spec.rb | 11 ++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/webcat/driver/rack_test_driver.rb b/lib/webcat/driver/rack_test_driver.rb index 0f75c0c3..23e053dc 100644 --- a/lib/webcat/driver/rack_test_driver.rb +++ b/lib/webcat/driver/rack_test_driver.rb @@ -13,7 +13,7 @@ class Webcat::Driver::RackTest end def set(value) - if tag_name == 'input' and %w(text password).include?(type) + if tag_name == 'input' and %w(text password hidden).include?(type) node['value'] = value.to_s elsif tag_name == 'input' and type == 'radio' session.html.xpath("//input[@name='#{self[:name]}']").each { |node| node.remove_attribute("checked") } diff --git a/lib/webcat/session.rb b/lib/webcat/session.rb index 03733fa0..8dfc6537 100644 --- a/lib/webcat/session.rb +++ b/lib/webcat/session.rb @@ -36,6 +36,10 @@ class Webcat::Session def choose(locator) find_field(locator, :radio).set(true) end + + def set_hidden_field(locator, options={}) + find_field(locator, :hidden_field).set(options[:to]) + end def body driver.body @@ -59,7 +63,8 @@ private :text_field => proc { |id| "//input[@type='text'][@id='#{id}']" }, :text_area => proc { |id| "//textarea[@id='#{id}']" }, :password_field => proc { |id| "//input[@type='password'][@id='#{id}']" }, - :radio => proc { |id| "//input[@type='radio'][@id='#{id}']" } + :radio => proc { |id| "//input[@type='radio'][@id='#{id}']" }, + :hidden_field => proc { |id| "//input[@type='hidden'][@id='#{id}']" } } def find_field_by_id(locator, *kinds) diff --git a/spec/session_spec.rb b/spec/session_spec.rb index f0744d77..5b2bb661 100644 --- a/spec/session_spec.rb +++ b/spec/session_spec.rb @@ -193,7 +193,16 @@ shared_examples_for "session" do end describe "#set_hidden_field" do - + before do + @session.visit('/form') + end + + it "should set a hidden field by id" do + pending "Culerity doesn't like hidden fields for some reason" if @session.mode == :culerity + @session.set_hidden_field("form_token", :to => 'test567') + @session.click_button('awesome') + YAML.load(@session.body)['token'].should == 'test567' + end end describe "#check" do