PageRenderTime 51ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/watir/unittests/form_test.rb

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