unittests/form_xpath_test.rb in watir-1.6.5 vs unittests/form_xpath_test.rb in watir-1.6.6.rc1

- old
+ new

@@ -1,252 +1,252 @@ -# feature tests for Forms -# revision: $Revision$ - -$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED -require 'unittests/setup' - -class TC_Forms2_XPath < Test::Unit::TestCase - def setup - goto_page "forms2.html" - end - - def test_Form_Exists - assert(browser.form(:xpath , "//form[@name='test2']/").exists?) - assert_false(browser.form(:xpath , "//form[@name='missing']/").exists?) - - assert(browser.form(:xpath , "//form[@method='get']/").exists?) - assert_false(browser.form(:xpath , "//form[@method='missing']/").exists?) - - assert(browser.form(:xpath , "//form[@action='pass.html']/").exists?) - assert_false(browser.form(:xpath , "//form[@action='missing']/").exists?) - end - - def test_ButtonInForm - assert(browser.form(:xpath , "//form[@name='test2']/").button(:caption , "Submit").exists?) - end -end - -class TC_Form_Display_XPath < Test::Unit::TestCase - include CaptureIOHelper - def test_showforms - goto_page "forms2.html" - - actual = capture_stdout { browser.show_forms } - assert_equal(<<END_OF_MESSAGE, actual) -There are 4 forms -Form name: - id: - method: get - action: pass.html -Form name: test2 - id: f2 - method: get - action: pass2.html -Form name: test3 - id: - method: get - action: pass2.html -Form name: test2 - id: - method: get - action: pass2.html -END_OF_MESSAGE - end -end - -class TC_Forms3_XPath < Test::Unit::TestCase - def setup - goto_page "forms3.html" - end - - def test_Form_Exists - assert(browser.form(:xpath , "//form[@name='test2']/").exists?) - assert_false(browser.form(:xpath , "//form[@name='missing']/").exists?) - - assert(browser.form(:xpath , "//form[@method='get']/").exists?) - assert_false(browser.form(:xpath , "//form[@method='missing']/").exists?) - - assert(browser.form(:xpath , "//form[@action='pass.html']/").exists?) - assert_false(browser.form(:xpath , "//form[@action='missing']/").exists?) - end - - def test_getObject_when_non_watir_object_before_it - # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html - assert_equal("check1" , browser.checkbox(:index,1).name ) - end - - def test_showforms # add verification of output! - browser.show_forms - end - - def test_reset - - browser.text_field(:id, "t1").set("Hello, reset test!") - assert_equal(browser.text_field(:id, 't1').value, 'Hello, reset test!') - - browser.button(:caption, "Reset").click - assert_equal("" , browser.text_field(:id, 't1').value ) - - # also verify it works under a form - browser.text_field(:id, "t1").set("reset test - using a form") - assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form') - - # also verify it works under a form, this time using the :id attribute - browser.text_field(:id, "t1").set("reset test - using a form") - assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form') - end - - def test_flash1 - browser.form(:xpath , "//form[@name='test2']/").button(:caption , "Submit").flash - end - - def test_objects_with_same_name - assert_equal('textfield' ,browser.text_field( :name , 'g1').value ) - assert_equal('button' ,browser.button( :name , 'g1').value ) - assert_equal('1' ,browser.checkbox( :name , 'g1').value ) - assert_equal('2' ,browser.radio( :name , 'g1').value ) - - assert_equal('textfield_id' ,browser.text_field( :id , 'g1').value ) - assert_equal('button_id' ,browser.button( :id , 'g1').value ) - assert_equal('1_id' ,browser.checkbox( :id , 'g1').value ) - assert_equal('2_id' ,browser.radio( :id , 'g1').value ) - end - - def test_flash2 - browser.button(:value, 'Click Me').flash - assert_raises( Watir::UnknownObjectException ) { browser.text_field( :name , 'g177').flash } - end - - def test_showElements # add verification! - browser.show_all_objects - end - - def test_showText - puts browser.text - end - - def test_showHTML - puts browser.html - end - - def test_submitWithImage - assert( browser.button(:alt , "submit").exists? ) - assert( browser.button(:alt , /sub/).exists? ) - - assert_false( browser.button(:alt , "missing").exists? ) - assert_false( browser.button(:alt , /missing/).exists? ) - - #assert( browser.button(:src , "file:///#{$myDir}/html/images/button.jpg").exists? ) # this doesnt work for everybody - assert( browser.button(:src , /button/).exists? ) - - assert_false( browser.button(:src , "missing").exists? ) - assert_false( browser.button(:src , /missing/).exists? ) - assert_nothing_raised("raised an exception when it shouldnt have") { browser.button(:src , /button/).click } - - assert( browser.contains_text("PASS") ) - end -end - -class TC_Forms4_XPath < Test::Unit::TestCase - def setup - goto_page "forms4.html" - end - - def test_find_text_field_ignoring_form - assert_equal(browser.text_field(:name, 'name').value, 'apple') # should it raise a not-unique error instead? - end - - def test_correct_form_field_is_found_using_form_name - assert_equal(browser.form(:xpath , "//form[@name='apple_form']/").text_field(:name, 'name').value, 'apple') - assert_equal(browser.form(:xpath , "//form[@name='banana_form']/").text_field(:name, 'name').value, 'banana') - end - - def test_using_text_on_form - browser.form(:xpath , "//form[@name='apple_form']/").text_field(:name, 'name').set('strudel') - assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'strudel') - end - - def test_submit - browser.form(:xpath , "//form[@name='apple_form']/").submit - assert( browser.contains_text("PASS") ) - end -end - -class TC_Hidden_Fields_XPath < Test::Unit::TestCase - def setup - goto_page "forms3.html" - end - - def test_hidden - - # test using index - assert( browser.hidden(:index,1).exists? ) - assert( browser.hidden(:index,2).exists? ) - assert_false( browser.hidden(:index,3).exists? ) - - browser.hidden(:index,1).value = 44 - browser.hidden(:index,2).value = 55 - - browser.button(:value , "Show Hidden").click - - assert_equal("44" , browser.text_field(:name , "vis1").value ) - assert_equal("55" , browser.text_field(:name , "vis2").value ) - - # test using name and ID - assert( browser.hidden(:name ,"hid1").exists? ) - assert( browser.hidden(:id,"hidden_1").exists? ) - assert_false( browser.hidden(:name,"hidden_44").exists? ) - assert_false( browser.hidden(:id,"hidden_55").exists? ) - - browser.hidden(:name ,"hid1").value = 444 - browser.hidden(:id,"hidden_1").value = 555 - - browser.button(:value , "Show Hidden").click - - assert_equal("444" , browser.text_field(:name , "vis1").value ) - assert_equal("555" , browser.text_field(:name ,"vis2").value ) - - # test the over-ridden append method - browser.hidden(:name ,"hid1").append("a") - browser.button(:value , "Show Hidden").click - assert_equal("444a" , browser.text_field(:name , "vis1").value ) - assert_equal("555" , browser.text_field(:name ,"vis2").value ) - - # test the over-ridden clear method - browser.hidden(:name ,"hid1").clear - browser.button(:value , "Show Hidden").click - assert_equal("" , browser.text_field(:name , "vis1").value ) - assert_equal("555" , browser.text_field(:name ,"vis2").value ) - - # test using a form - assert( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:name ,"hid1").exists? ) - assert( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:id,"hidden_1").exists? ) - assert_false( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:name,"hidden_44").exists? ) - assert_false( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:id,"hidden_55").exists? ) - - browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:name ,"hid1").value = 222 - browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:id,"hidden_1").value = 333 - - browser.button(:value , "Show Hidden").click - - assert_equal("222" , browser.text_field(:name , "vis1").value ) - assert_equal("333" , browser.text_field(:name ,"vis2").value ) - - # iterators - assert_equal(2, browser.hiddens.length) - count =1 - browser.hiddens.each do |h| - case count - when 1 - assert_equal( "", h.id) - assert_equal( "hid1", h.name) - when 2 - assert_equal( "", h.name) - assert_equal( "hidden_1", h.id) - end - count+=1 - end - - assert_equal("hid1" , browser.hiddens[1].name ) - assert_equal("hidden_1" , browser.hiddens[2].id ) - end -end +# feature tests for Forms +# revision: $Revision$ + +$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED +require 'unittests/setup' + +class TC_Forms2_XPath < Test::Unit::TestCase + def setup + goto_page "forms2.html" + end + + def test_Form_Exists + assert(browser.form(:xpath , "//form[@name='test2']/").exists?) + assert_false(browser.form(:xpath , "//form[@name='missing']/").exists?) + + assert(browser.form(:xpath , "//form[@method='get']/").exists?) + assert_false(browser.form(:xpath , "//form[@method='missing']/").exists?) + + assert(browser.form(:xpath , "//form[@action='pass.html']/").exists?) + assert_false(browser.form(:xpath , "//form[@action='missing']/").exists?) + end + + def test_ButtonInForm + assert(browser.form(:xpath , "//form[@name='test2']/").button(:caption , "Submit").exists?) + end +end + +class TC_Form_Display_XPath < Test::Unit::TestCase + include CaptureIOHelper + def test_showforms + goto_page "forms2.html" + + actual = capture_stdout { browser.show_forms } + assert_equal(<<END_OF_MESSAGE, actual) +There are 4 forms +Form name: + id: + method: get + action: pass.html +Form name: test2 + id: f2 + method: get + action: pass2.html +Form name: test3 + id: + method: get + action: pass2.html +Form name: test2 + id: + method: get + action: pass2.html +END_OF_MESSAGE + end +end + +class TC_Forms3_XPath < Test::Unit::TestCase + def setup + goto_page "forms3.html" + end + + def test_Form_Exists + assert(browser.form(:xpath , "//form[@name='test2']/").exists?) + assert_false(browser.form(:xpath , "//form[@name='missing']/").exists?) + + assert(browser.form(:xpath , "//form[@method='get']/").exists?) + assert_false(browser.form(:xpath , "//form[@method='missing']/").exists?) + + assert(browser.form(:xpath , "//form[@action='pass.html']/").exists?) + assert_false(browser.form(:xpath , "//form[@action='missing']/").exists?) + end + + def test_getObject_when_non_watir_object_before_it + # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html + assert_equal("check1" , browser.checkbox(:index,1).name ) + end + + def test_showforms # add verification of output! + browser.show_forms + end + + def test_reset + + browser.text_field(:id, "t1").set("Hello, reset test!") + assert_equal(browser.text_field(:id, 't1').value, 'Hello, reset test!') + + browser.button(:caption, "Reset").click + assert_equal("" , browser.text_field(:id, 't1').value ) + + # also verify it works under a form + browser.text_field(:id, "t1").set("reset test - using a form") + assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form') + + # also verify it works under a form, this time using the :id attribute + browser.text_field(:id, "t1").set("reset test - using a form") + assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form') + end + + def test_flash1 + browser.form(:xpath , "//form[@name='test2']/").button(:caption , "Submit").flash + end + + def test_objects_with_same_name + assert_equal('textfield' ,browser.text_field( :name , 'g1').value ) + assert_equal('button' ,browser.button( :name , 'g1').value ) + assert_equal('1' ,browser.checkbox( :name , 'g1').value ) + assert_equal('2' ,browser.radio( :name , 'g1').value ) + + assert_equal('textfield_id' ,browser.text_field( :id , 'g1').value ) + assert_equal('button_id' ,browser.button( :id , 'g1').value ) + assert_equal('1_id' ,browser.checkbox( :id , 'g1').value ) + assert_equal('2_id' ,browser.radio( :id , 'g1').value ) + end + + def test_flash2 + browser.button(:value, 'Click Me').flash + assert_raises( Watir::UnknownObjectException ) { browser.text_field( :name , 'g177').flash } + end + + def test_showElements # add verification! + browser.show_all_objects + end + + def test_showText + puts browser.text + end + + def test_showHTML + puts browser.html + end + + def test_submitWithImage + assert( browser.button(:alt , "submit").exists? ) + assert( browser.button(:alt , /sub/).exists? ) + + assert_false( browser.button(:alt , "missing").exists? ) + assert_false( browser.button(:alt , /missing/).exists? ) + + #assert( browser.button(:src , "file:///#{$myDir}/html/images/button.jpg").exists? ) # this doesnt work for everybody + assert( browser.button(:src , /button/).exists? ) + + assert_false( browser.button(:src , "missing").exists? ) + assert_false( browser.button(:src , /missing/).exists? ) + assert_nothing_raised("raised an exception when it shouldnt have") { browser.button(:src , /button/).click } + + assert( browser.contains_text("PASS") ) + end +end + +class TC_Forms4_XPath < Test::Unit::TestCase + def setup + goto_page "forms4.html" + end + + def test_find_text_field_ignoring_form + assert_equal(browser.text_field(:name, 'name').value, 'apple') # should it raise a not-unique error instead? + end + + def test_correct_form_field_is_found_using_form_name + assert_equal(browser.form(:xpath , "//form[@name='apple_form']/").text_field(:name, 'name').value, 'apple') + assert_equal(browser.form(:xpath , "//form[@name='banana_form']/").text_field(:name, 'name').value, 'banana') + end + + def test_using_text_on_form + browser.form(:xpath , "//form[@name='apple_form']/").text_field(:name, 'name').set('strudel') + assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'strudel') + end + + def test_submit + browser.form(:xpath , "//form[@name='apple_form']/").submit + assert( browser.contains_text("PASS") ) + end +end + +class TC_Hidden_Fields_XPath < Test::Unit::TestCase + def setup + goto_page "forms3.html" + end + + def test_hidden + + # test using index + assert( browser.hidden(:index,1).exists? ) + assert( browser.hidden(:index,2).exists? ) + assert_false( browser.hidden(:index,3).exists? ) + + browser.hidden(:index,1).value = 44 + browser.hidden(:index,2).value = 55 + + browser.button(:value , "Show Hidden").click + + assert_equal("44" , browser.text_field(:name , "vis1").value ) + assert_equal("55" , browser.text_field(:name , "vis2").value ) + + # test using name and ID + assert( browser.hidden(:name ,"hid1").exists? ) + assert( browser.hidden(:id,"hidden_1").exists? ) + assert_false( browser.hidden(:name,"hidden_44").exists? ) + assert_false( browser.hidden(:id,"hidden_55").exists? ) + + browser.hidden(:name ,"hid1").value = 444 + browser.hidden(:id,"hidden_1").value = 555 + + browser.button(:value , "Show Hidden").click + + assert_equal("444" , browser.text_field(:name , "vis1").value ) + assert_equal("555" , browser.text_field(:name ,"vis2").value ) + + # test the over-ridden append method + browser.hidden(:name ,"hid1").append("a") + browser.button(:value , "Show Hidden").click + assert_equal("444a" , browser.text_field(:name , "vis1").value ) + assert_equal("555" , browser.text_field(:name ,"vis2").value ) + + # test the over-ridden clear method + browser.hidden(:name ,"hid1").clear + browser.button(:value , "Show Hidden").click + assert_equal("" , browser.text_field(:name , "vis1").value ) + assert_equal("555" , browser.text_field(:name ,"vis2").value ) + + # test using a form + assert( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:name ,"hid1").exists? ) + assert( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:id,"hidden_1").exists? ) + assert_false( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:name,"hidden_44").exists? ) + assert_false( browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:id,"hidden_55").exists? ) + + browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:name ,"hid1").value = 222 + browser.form(:xpath , "//form[@name='has_a_hidden']/").hidden(:id,"hidden_1").value = 333 + + browser.button(:value , "Show Hidden").click + + assert_equal("222" , browser.text_field(:name , "vis1").value ) + assert_equal("333" , browser.text_field(:name ,"vis2").value ) + + # iterators + assert_equal(2, browser.hiddens.length) + count =1 + browser.hiddens.each do |h| + case count + when 1 + assert_equal( "", h.id) + assert_equal( "hid1", h.name) + when 2 + assert_equal( "", h.name) + assert_equal( "hidden_1", h.id) + end + count+=1 + end + + assert_equal("hid1" , browser.hiddens[1].name ) + assert_equal("hidden_1" , browser.hiddens[2].id ) + end +end