PageRenderTime 56ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/firewatir/unittests/form_test.rb

https://github.com/chenpassion/watir
Ruby | 308 lines | 193 code | 66 blank | 49 comment | 0 complexity | 3479dac8e50c8e3bad522bcc160436bc MD5 | raw file
Possible License(s): BSD-3-Clause
  1. # feature tests for Forms
  2. # revision: $Revision: 1.0 $
  3. $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
  4. require 'unittests/setup'
  5. class TC_Forms2 < Test::Unit::TestCase # Note: there is no TC_Forms
  6. def setup
  7. goto_page("forms2.html")
  8. end
  9. def test_Form_Exists
  10. assert(browser.form(:name, "test2").exists?)
  11. assert_false(browser.form(:name, "missing").exists?)
  12. assert(browser.form("test2").exists?)
  13. assert_false(browser.form( "missing").exists?)
  14. assert(browser.form(:index, 1).exists?)
  15. assert_false(browser.form(:index, 88).exists?)
  16. assert(browser.form(:method, "get").exists?)
  17. assert_false(browser.form(:method, "missing").exists?)
  18. assert(browser.form(:id, 'f2').exists?)
  19. assert_false(browser.form(:id, 'missing').exists?)
  20. assert(browser.form(:action, /pass.html/).exists?)
  21. assert_false(browser.form(:action, "missing").exists?)
  22. end
  23. def test_ButtonInForm
  24. assert(browser.form(:name, "test2").button(:caption , "Submit").exists?)
  25. end
  26. # The following tests from bug 2261
  27. tag_method :test_form_html, :fails_on_ie
  28. def test_form_html
  29. assert_equal("\n<BR><INPUT value=\"Submit\" type=\"submit\">\n".downcase(),
  30. browser.form(:name, 'test2').html.downcase())
  31. end
  32. def test_form_flash
  33. assert_nothing_raised{ browser.form(:name, 'test2').flash }
  34. end
  35. def test_form_sub_element
  36. assert_equal('Click Me', browser.form(:index, 1).button(:name, 'b1').value)
  37. end
  38. end
  39. class TC_Form_Display < Test::Unit::TestCase
  40. include MockStdoutTestCase
  41. def test_showforms
  42. goto_page("forms2.html")
  43. $stdout = @mockout
  44. browser.showForms
  45. assert_equal(<<END_OF_MESSAGE, @mockout)
  46. There are 4 forms
  47. Form name:
  48. id:
  49. method: get
  50. action: pass.html
  51. Form name: test2
  52. id: f2
  53. method: get
  54. action: pass2.html
  55. Form name: test3
  56. id:
  57. method: get
  58. action: pass2.html
  59. Form name: test2
  60. id:
  61. method: get
  62. action: pass2.html
  63. END_OF_MESSAGE
  64. end
  65. end
  66. class TC_Forms3 < Test::Unit::TestCase
  67. def setup
  68. goto_page("forms3.html")
  69. end
  70. # The following tests from bug 2261
  71. def test_p_in_form
  72. browser.form(:name, 'buttonsubmit').p(:index, 1).text
  73. end
  74. def test_Form_Exists
  75. assert(browser.form(:name, "test2").exists?)
  76. assert_false(browser.form(:name, "missing").exists?)
  77. assert(browser.form("test2").exists?)
  78. assert_false(browser.form( "missing").exists?)
  79. assert(browser.form(:index, 1).exists?)
  80. assert_false(browser.form(:index, 88).exists?)
  81. assert(browser.form(:method, "get").exists?)
  82. assert_false(browser.form(:method, "missing").exists?)
  83. assert(browser.form(:action, "pass.html").exists?)
  84. assert_false(browser.form(:action, "missing").exists?)
  85. end
  86. def test_index_other_element_before_it
  87. # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html
  88. assert_equal("check1" , browser.checkbox(:index,1).name )
  89. end
  90. def test_reset
  91. browser.text_field(:id, "t1").set("Hello, reset test!")
  92. assert_equal(browser.text_field(:id, 't1').value, 'Hello, reset test!')
  93. browser.button(:id, "reset_button").click
  94. assert_equal("" , browser.text_field(:id, 't1').value )
  95. # also verify it works under a form
  96. browser.text_field(:id, "t1").set("reset test - using a form")
  97. assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form')
  98. browser.form(:index,2).button(:index,2).click
  99. assert_equal("" , browser.text_field(:id, 't1').value )
  100. # also verify it works under a form, this time using the :id attribute
  101. browser.text_field(:id, "t1").set("reset test - using a form")
  102. assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form')
  103. browser.form(:index,2).button(:id,'reset_button').click
  104. assert_equal("" , browser.text_field(:id, 't1').value )
  105. end
  106. ## def test_flash1
  107. ## browser.form(:name ,"test2").button(:caption , "Submit").flash
  108. ## end
  109. #
  110. def test_objects_with_same_name
  111. assert_equal('textfield' ,browser.text_field( :name , 'g1').value )
  112. assert_equal('button' ,browser.button( :name , 'g1').value )
  113. assert_equal('1' ,browser.checkbox( :name , 'g1').value )
  114. assert_equal('2' ,browser.radio( :name , 'g1').value )
  115. assert_equal('textfield' ,browser.text_field( :name , /g1/).value )
  116. assert_equal('button' ,browser.button( :name , /g1/).value )
  117. assert_equal('1' ,browser.checkbox( :name , /g1/).value )
  118. assert_equal('2' ,browser.radio( :name , /g1/).value )
  119. assert_equal('textfield_id' ,browser.text_field( :id , 'g1').value )
  120. assert_equal('button_id' ,browser.button( :id , 'g1').value )
  121. assert_equal('1_id' ,browser.checkbox( :id , 'g1').value )
  122. assert_equal('2_id' ,browser.radio( :id , 'g1').value )
  123. assert_equal('textfield_id' ,browser.text_field( :id , /g1/).value )
  124. assert_equal('button_id' ,browser.button( :id , /g1/).value )
  125. assert_equal('1_id' ,browser.checkbox( :id , /g1/).value )
  126. assert_equal('2_id' ,browser.radio( :id , /g1/).value )
  127. end
  128. # def test_flash2
  129. # browser.button(:value, 'Click Me').flash
  130. # assert_raises( Watir::UnknownObjectException ) { browser.text_field( :name , 'g177').flash }
  131. # end
  132. def test_submitWithImage
  133. assert( browser.button(:alt , "submit").exists? )
  134. assert( browser.button(:alt , /sub/).exists? )
  135. assert_false( browser.button(:alt , "missing").exists? )
  136. assert_false( browser.button(:alt , /missing/).exists? )
  137. #assert( browser.button(:src , "file:///#{$myDir}/html/images/button.jpg").exists? ) # this doesnt work for everybody
  138. assert( browser.button(:src , /button/).exists? )
  139. assert_false( browser.button(:src , "missing").exists? )
  140. assert_false( browser.button(:src , /missing/).exists? )
  141. assert_nothing_raised("raised an exception when it shouldnt have") { browser.button(:src , /button/).click }
  142. assert( browser.text.include?("PASS") )
  143. end
  144. end
  145. #class TC_Forms3_Display < Test::Unit::TestCase
  146. #
  147. # include MockStdoutTestCase # BUG in test: output not verified!
  148. # def test_show_stuff
  149. # goto_page("forms3.html")
  150. # $stdout = @mockout
  151. # browser.showAllObjects
  152. # puts browser.getText
  153. # puts browser.getHTML
  154. # end
  155. #end
  156. class TC_Forms4 < Test::Unit::TestCase
  157. def setup
  158. goto_page("forms4.html")
  159. end
  160. def test_find_text_field_ignoring_form
  161. assert_equal(browser.text_field(:name, 'name').value, 'apple') # should it raise a not-unique error instead?
  162. end
  163. def test_correct_form_field_is_found_using_form_name
  164. assert_equal(browser.form(:name, 'apple_form').text_field(:name, 'name').value, 'apple')
  165. assert_equal(browser.form(:name, 'banana_form').text_field(:name, 'name').value, 'banana')
  166. end
  167. def test_correct_form_field_is_found_using_form_index
  168. assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'apple')
  169. assert_equal(browser.form(:index, 2).text_field(:name, 'name').value, 'banana')
  170. end
  171. def test_using_text_on_form
  172. browser.form(:name, 'apple_form').text_field(:name, 'name').set('strudel')
  173. assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'strudel')
  174. end
  175. def test_submit
  176. browser.form(:name, 'apple_form').submit
  177. assert( browser.text.include?("PASS") )
  178. end
  179. end
  180. class TC_Hidden_Fields2 < Test::Unit::TestCase
  181. def setup
  182. goto_page("forms3.html")
  183. end
  184. def test_hidden
  185. # test using index
  186. assert( browser.hidden(:index,1).exists? )
  187. assert( browser.hidden(:index,2).exists? )
  188. assert_false( browser.hidden(:index,3).exists? )
  189. browser.hidden(:index,1).value = 44
  190. browser.hidden(:index,2).value = 55
  191. browser.button(:value , "Show Hidden").click
  192. assert_equal("44" , browser.text_field(:name , "vis1").value )
  193. assert_equal("55" , browser.text_field(:name , "vis2").value )
  194. # test using name and ID
  195. assert( browser.hidden(:name ,"hid1").exists? )
  196. assert( browser.hidden(:id,"hidden_1").exists? )
  197. assert_false( browser.hidden(:name,"hidden_44").exists? )
  198. assert_false( browser.hidden(:id,"hidden_55").exists? )
  199. browser.hidden(:name ,"hid1").value = 444
  200. browser.hidden(:id,"hidden_1").value = 555
  201. browser.button(:value , "Show Hidden").click
  202. assert_equal("444" , browser.text_field(:name , "vis1").value )
  203. assert_equal("555" , browser.text_field(:name ,"vis2").value )
  204. # test the over-ridden append method
  205. browser.hidden(:name ,"hid1").append("a")
  206. browser.button(:value , "Show Hidden").click
  207. assert_equal("444a" , browser.text_field(:name , "vis1").value )
  208. assert_equal("555" , browser.text_field(:name ,"vis2").value )
  209. # test the over-ridden clear method
  210. browser.hidden(:name ,"hid1").clear
  211. browser.button(:value , "Show Hidden").click
  212. assert_equal("" , browser.text_field(:name , "vis1").value )
  213. assert_equal("555" , browser.text_field(:name ,"vis2").value )
  214. # test using a form
  215. assert( browser.form(:name , "has_a_hidden").hidden(:name ,"hid1").exists? )
  216. assert( browser.form(:name , "has_a_hidden").hidden(:id,"hidden_1").exists? )
  217. assert_false( browser.form(:name , "has_a_hidden").hidden(:name,"hidden_44").exists? )
  218. assert_false( browser.form(:name , "has_a_hidden").hidden(:id,"hidden_55").exists? )
  219. browser.form(:name , "has_a_hidden").hidden(:name ,"hid1").value = 222
  220. browser.form(:name , "has_a_hidden").hidden(:id,"hidden_1").value = 333
  221. browser.button(:value , "Show Hidden").click
  222. assert_equal("222" , browser.text_field(:name , "vis1").value )
  223. assert_equal("333" , browser.text_field(:name ,"vis2").value )
  224. # iterators
  225. ## assert_equal(2, browser.hiddens.length)
  226. ## count =1
  227. ## browser.hiddens.each do |h|
  228. ## case count
  229. ## when 1
  230. ## assert_equal( "", h.id)
  231. ## assert_equal( "hid1", h.name)
  232. ## when 2
  233. ## assert_equal( "", h.name)
  234. ## assert_equal( "hidden_1", h.id)
  235. ## end
  236. ## count+=1
  237. ## end
  238. #
  239. ## assert_equal("hid1" , browser.hiddens[1].name )
  240. ## assert_equal("hidden_1" , browser.hiddens[2].id )
  241. end
  242. end