caius-celerity 0.0.6.10 → 0.0.6.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (279) hide show
  1. data/Manifest.txt +335 -0
  2. data/benchmark/bm_2000_spans.rb +48 -0
  3. data/benchmark/bm_digg.rb +26 -0
  4. data/benchmark/bm_google_images.rb +36 -0
  5. data/benchmark/bm_input_locator.rb +69 -0
  6. data/benchmark/bm_text_input.rb +19 -0
  7. data/benchmark/loader.rb +14 -0
  8. data/celerity.gemspec +33 -0
  9. data/config/hoe.rb +78 -0
  10. data/config/requirements.rb +9 -0
  11. data/lib/celerity/version.rb +1 -1
  12. data/spec/area_spec.rb +97 -0
  13. data/spec/areas_spec.rb +40 -0
  14. data/spec/browser_authentication_spec.rb +20 -0
  15. data/spec/browser_spec.rb +537 -0
  16. data/spec/button_spec.rb +244 -0
  17. data/spec/buttons_spec.rb +51 -0
  18. data/spec/checkbox_spec.rb +302 -0
  19. data/spec/checkboxes_spec.rb +38 -0
  20. data/spec/clickable_element_spec.rb +43 -0
  21. data/spec/dd_spec.rb +143 -0
  22. data/spec/dds_spec.rb +39 -0
  23. data/spec/default_viewer_spec.rb +24 -0
  24. data/spec/div_spec.rb +235 -0
  25. data/spec/divs_spec.rb +39 -0
  26. data/spec/dl_spec.rb +143 -0
  27. data/spec/dls_spec.rb +39 -0
  28. data/spec/dt_spec.rb +143 -0
  29. data/spec/dts_spec.rb +39 -0
  30. data/spec/element_spec.rb +150 -0
  31. data/spec/em_spec.rb +116 -0
  32. data/spec/ems_spec.rb +39 -0
  33. data/spec/filefield_spec.rb +133 -0
  34. data/spec/filefields_spec.rb +40 -0
  35. data/spec/form_spec.rb +59 -0
  36. data/spec/forms_spec.rb +41 -0
  37. data/spec/frame_spec.rb +139 -0
  38. data/spec/frames_spec.rb +71 -0
  39. data/spec/hidden_spec.rb +127 -0
  40. data/spec/hiddens_spec.rb +39 -0
  41. data/spec/hn_spec.rb +104 -0
  42. data/spec/hns_spec.rb +45 -0
  43. data/spec/html/2000_spans.html +2009 -0
  44. data/spec/html/bug_duplicate_attributes.html +14 -0
  45. data/spec/html/bug_javascript_001.html +11 -0
  46. data/spec/html/definition_lists.html +48 -0
  47. data/spec/html/euc-jp_text.html +17 -0
  48. data/spec/html/forms_with_input_elements.html +124 -0
  49. data/spec/html/frame_1.html +18 -0
  50. data/spec/html/frame_2.html +16 -0
  51. data/spec/html/frames.html +11 -0
  52. data/spec/html/iframes.html +12 -0
  53. data/spec/html/images.html +27 -0
  54. data/spec/html/images/1.gif +0 -0
  55. data/spec/html/images/2.gif +0 -0
  56. data/spec/html/images/3.gif +0 -0
  57. data/spec/html/images/button.jpg +0 -0
  58. data/spec/html/images/circle.jpg +0 -0
  59. data/spec/html/images/map.gif +0 -0
  60. data/spec/html/images/map2.gif +0 -0
  61. data/spec/html/images/minus.gif +0 -0
  62. data/spec/html/images/originaltriangle.jpg +0 -0
  63. data/spec/html/images/plus.gif +0 -0
  64. data/spec/html/images/square.jpg +0 -0
  65. data/spec/html/images/triangle.jpg +0 -0
  66. data/spec/html/iso-2022-jp_text.html +17 -0
  67. data/spec/html/jquery.html +29 -0
  68. data/spec/html/latin1_text.html +17 -0
  69. data/spec/html/multiple_ids.html +14 -0
  70. data/spec/html/non_control_elements.html +115 -0
  71. data/spec/html/right_click.html +16 -0
  72. data/spec/html/shift_jis_text.html +17 -0
  73. data/spec/html/tables.html +119 -0
  74. data/spec/html/timeout.html +16 -0
  75. data/spec/html/tiny_mce.html +29 -0
  76. data/spec/html/utf8_text.html +15 -0
  77. data/spec/htmlunit_spec.rb +47 -0
  78. data/spec/image_spec.rb +221 -0
  79. data/spec/images_spec.rb +39 -0
  80. data/spec/index_offset_spec.rb +26 -0
  81. data/spec/label_spec.rb +88 -0
  82. data/spec/labels_spec.rb +40 -0
  83. data/spec/li_spec.rb +139 -0
  84. data/spec/link_spec.rb +200 -0
  85. data/spec/links_spec.rb +47 -0
  86. data/spec/lis_spec.rb +40 -0
  87. data/spec/listener_spec.rb +142 -0
  88. data/spec/map_spec.rb +102 -0
  89. data/spec/maps_spec.rb +40 -0
  90. data/spec/meta_spec.rb +29 -0
  91. data/spec/metas_spec.rb +38 -0
  92. data/spec/ol_spec.rb +87 -0
  93. data/spec/ols_spec.rb +40 -0
  94. data/spec/option_spec.rb +156 -0
  95. data/spec/p_spec.rb +171 -0
  96. data/spec/pre_spec.rb +135 -0
  97. data/spec/pres_spec.rb +40 -0
  98. data/spec/ps_spec.rb +40 -0
  99. data/spec/radio_spec.rb +314 -0
  100. data/spec/radios_spec.rb +42 -0
  101. data/spec/select_list_spec.rb +320 -0
  102. data/spec/select_lists_spec.rb +47 -0
  103. data/spec/span_spec.rb +184 -0
  104. data/spec/spans_spec.rb +64 -0
  105. data/spec/spec.opts +1 -0
  106. data/spec/spec_helper.rb +66 -0
  107. data/spec/strong_spec.rb +101 -0
  108. data/spec/strongs_spec.rb +40 -0
  109. data/spec/table_bodies_spec.rb +57 -0
  110. data/spec/table_body_spec.rb +109 -0
  111. data/spec/table_cell_spec.rb +84 -0
  112. data/spec/table_cells_spec.rb +59 -0
  113. data/spec/table_footer_spec.rb +96 -0
  114. data/spec/table_footers_spec.rb +55 -0
  115. data/spec/table_header_spec.rb +101 -0
  116. data/spec/table_headers_spec.rb +55 -0
  117. data/spec/table_row_spec.rb +106 -0
  118. data/spec/table_rows_spec.rb +58 -0
  119. data/spec/table_spec.rb +169 -0
  120. data/spec/tables_spec.rb +42 -0
  121. data/spec/text_field_spec.rb +331 -0
  122. data/spec/text_fields_spec.rb +44 -0
  123. data/spec/ul_spec.rb +88 -0
  124. data/spec/uls_spec.rb +40 -0
  125. data/spec/watir_compatibility_spec.rb +268 -0
  126. data/support/spec_server.rb +122 -0
  127. data/tasks/benchmark.rake +4 -0
  128. data/tasks/deployment.rake +43 -0
  129. data/tasks/environment.rake +7 -0
  130. data/tasks/fix.rake +25 -0
  131. data/tasks/rspec.rake +31 -0
  132. data/tasks/simple_ci.rake +94 -0
  133. data/tasks/snapshot.rake +22 -0
  134. data/tasks/specserver.rake +21 -0
  135. data/tasks/website.rake +17 -0
  136. data/tasks/yard.rake +9 -0
  137. data/website/benchmarks.html +237 -0
  138. data/website/css/color.css +153 -0
  139. data/website/css/hacks.css +3 -0
  140. data/website/css/layout.css +179 -0
  141. data/website/css/screen.css +5 -0
  142. data/website/css/textmate.css +226 -0
  143. data/website/css/typography.css +72 -0
  144. data/website/gfx/body_bg.gif +0 -0
  145. data/website/gfx/button_bg.jpg +0 -0
  146. data/website/gfx/header_bg.jpg +0 -0
  147. data/website/gfx/header_left.jpg +0 -0
  148. data/website/gfx/header_right.jpg +0 -0
  149. data/website/gfx/nav_bg.jpg +0 -0
  150. data/website/index.html +133 -0
  151. data/website/yard/Celerity.html +50 -0
  152. data/website/yard/Celerity/Area.html +212 -0
  153. data/website/yard/Celerity/Areas.html +103 -0
  154. data/website/yard/Celerity/Browser.html +5594 -0
  155. data/website/yard/Celerity/Button.html +312 -0
  156. data/website/yard/Celerity/Buttons.html +103 -0
  157. data/website/yard/Celerity/CheckBox.html +347 -0
  158. data/website/yard/Celerity/CheckBoxes.html +103 -0
  159. data/website/yard/Celerity/ClickableElement.html +448 -0
  160. data/website/yard/Celerity/Container.html +7676 -0
  161. data/website/yard/Celerity/Dd.html +198 -0
  162. data/website/yard/Celerity/Dds.html +103 -0
  163. data/website/yard/Celerity/DefaultViewer.html +101 -0
  164. data/website/yard/Celerity/DisabledElement.html +252 -0
  165. data/website/yard/Celerity/Div.html +198 -0
  166. data/website/yard/Celerity/Divs.html +103 -0
  167. data/website/yard/Celerity/Dl.html +198 -0
  168. data/website/yard/Celerity/Dls.html +103 -0
  169. data/website/yard/Celerity/Dt.html +198 -0
  170. data/website/yard/Celerity/Dts.html +103 -0
  171. data/website/yard/Celerity/Element.html +1703 -0
  172. data/website/yard/Celerity/ElementCollection.html +725 -0
  173. data/website/yard/Celerity/ElementLocator.html +589 -0
  174. data/website/yard/Celerity/Em.html +198 -0
  175. data/website/yard/Celerity/Ems.html +103 -0
  176. data/website/yard/Celerity/Exception.html +23 -0
  177. data/website/yard/Celerity/Exception/CelerityException.html +32 -0
  178. data/website/yard/Celerity/Exception/MissingWayOfFindingObjectException.html +32 -0
  179. data/website/yard/Celerity/Exception/NavigationException.html +33 -0
  180. data/website/yard/Celerity/Exception/NoValueFoundException.html +33 -0
  181. data/website/yard/Celerity/Exception/ObjectDisabledException.html +33 -0
  182. data/website/yard/Celerity/Exception/ObjectReadOnlyException.html +33 -0
  183. data/website/yard/Celerity/Exception/UnexpectedPageException.html +33 -0
  184. data/website/yard/Celerity/Exception/UnknownCellException.html +33 -0
  185. data/website/yard/Celerity/Exception/UnknownFormException.html +33 -0
  186. data/website/yard/Celerity/Exception/UnknownFrameException.html +33 -0
  187. data/website/yard/Celerity/Exception/UnknownObjectException.html +33 -0
  188. data/website/yard/Celerity/Exception/UnknownRowException.html +33 -0
  189. data/website/yard/Celerity/FileField.html +289 -0
  190. data/website/yard/Celerity/FileFields.html +103 -0
  191. data/website/yard/Celerity/Form.html +284 -0
  192. data/website/yard/Celerity/Forms.html +103 -0
  193. data/website/yard/Celerity/Frame.html +527 -0
  194. data/website/yard/Celerity/Frames.html +103 -0
  195. data/website/yard/Celerity/H1.html +198 -0
  196. data/website/yard/Celerity/H1s.html +103 -0
  197. data/website/yard/Celerity/H2.html +198 -0
  198. data/website/yard/Celerity/H2s.html +103 -0
  199. data/website/yard/Celerity/H3.html +198 -0
  200. data/website/yard/Celerity/H3s.html +103 -0
  201. data/website/yard/Celerity/H4.html +198 -0
  202. data/website/yard/Celerity/H4s.html +103 -0
  203. data/website/yard/Celerity/H5.html +198 -0
  204. data/website/yard/Celerity/H5s.html +103 -0
  205. data/website/yard/Celerity/H6.html +198 -0
  206. data/website/yard/Celerity/H6s.html +103 -0
  207. data/website/yard/Celerity/Hidden.html +285 -0
  208. data/website/yard/Celerity/Hiddens.html +103 -0
  209. data/website/yard/Celerity/Image.html +645 -0
  210. data/website/yard/Celerity/Images.html +103 -0
  211. data/website/yard/Celerity/InputElement.html +271 -0
  212. data/website/yard/Celerity/Label.html +210 -0
  213. data/website/yard/Celerity/Labels.html +103 -0
  214. data/website/yard/Celerity/Li.html +198 -0
  215. data/website/yard/Celerity/Link.html +295 -0
  216. data/website/yard/Celerity/Links.html +103 -0
  217. data/website/yard/Celerity/Lis.html +103 -0
  218. data/website/yard/Celerity/Listener.html +821 -0
  219. data/website/yard/Celerity/Map.html +198 -0
  220. data/website/yard/Celerity/Maps.html +103 -0
  221. data/website/yard/Celerity/Meta.html +196 -0
  222. data/website/yard/Celerity/Metas.html +103 -0
  223. data/website/yard/Celerity/MethodGenerator.html +195 -0
  224. data/website/yard/Celerity/NonControlElement.html +212 -0
  225. data/website/yard/Celerity/Ol.html +198 -0
  226. data/website/yard/Celerity/Ols.html +103 -0
  227. data/website/yard/Celerity/Option.html +348 -0
  228. data/website/yard/Celerity/Options.html +103 -0
  229. data/website/yard/Celerity/P.html +198 -0
  230. data/website/yard/Celerity/Pre.html +198 -0
  231. data/website/yard/Celerity/Pres.html +103 -0
  232. data/website/yard/Celerity/Ps.html +103 -0
  233. data/website/yard/Celerity/Radio.html +339 -0
  234. data/website/yard/Celerity/RadioCheckCommon.html +453 -0
  235. data/website/yard/Celerity/Radios.html +103 -0
  236. data/website/yard/Celerity/SelectList.html +1122 -0
  237. data/website/yard/Celerity/SelectLists.html +103 -0
  238. data/website/yard/Celerity/ShortInspect.html +108 -0
  239. data/website/yard/Celerity/Span.html +198 -0
  240. data/website/yard/Celerity/Spans.html +103 -0
  241. data/website/yard/Celerity/Strong.html +198 -0
  242. data/website/yard/Celerity/Strongs.html +103 -0
  243. data/website/yard/Celerity/Table.html +1287 -0
  244. data/website/yard/Celerity/TableBodies.html +103 -0
  245. data/website/yard/Celerity/TableBody.html +203 -0
  246. data/website/yard/Celerity/TableCell.html +279 -0
  247. data/website/yard/Celerity/TableCells.html +103 -0
  248. data/website/yard/Celerity/TableElement.html +437 -0
  249. data/website/yard/Celerity/TableFooter.html +203 -0
  250. data/website/yard/Celerity/TableFooters.html +103 -0
  251. data/website/yard/Celerity/TableHeader.html +203 -0
  252. data/website/yard/Celerity/TableHeaders.html +103 -0
  253. data/website/yard/Celerity/TableRow.html +478 -0
  254. data/website/yard/Celerity/TableRows.html +103 -0
  255. data/website/yard/Celerity/Tables.html +103 -0
  256. data/website/yard/Celerity/TextField.html +938 -0
  257. data/website/yard/Celerity/TextFields.html +103 -0
  258. data/website/yard/Celerity/Th.html +208 -0
  259. data/website/yard/Celerity/Ul.html +209 -0
  260. data/website/yard/Celerity/Uls.html +103 -0
  261. data/website/yard/Celerity/Util.html +264 -0
  262. data/website/yard/Celerity/VERSION.html +44 -0
  263. data/website/yard/HtmlUnit.html +23 -0
  264. data/website/yard/HtmlUnit/Html.html +23 -0
  265. data/website/yard/HtmlUnit/Util.html +23 -0
  266. data/website/yard/Java/ComGargoylesoftwareHtmlunitHtml/HtmlPage.html +90 -0
  267. data/website/yard/Java/JavaLang/Iterable.html +103 -0
  268. data/website/yard/Java/OrgW3cDom/NamedNodeMap.html +97 -0
  269. data/website/yard/README.txt.html +116 -0
  270. data/website/yard/String.html +103 -0
  271. data/website/yard/all-files.html +22 -0
  272. data/website/yard/all-methods.html +3276 -0
  273. data/website/yard/all-namespaces.html +258 -0
  274. data/website/yard/app.js +18 -0
  275. data/website/yard/index.html +19 -0
  276. data/website/yard/jquery.js +11 -0
  277. data/website/yard/style.css +68 -0
  278. data/website/yard/syntax_highlight.css +21 -0
  279. metadata +285 -13
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Ols" do
4
+
5
+ before :all do
6
+ @browser = Browser.new(BROWSER_OPTIONS)
7
+ end
8
+
9
+ before :each do
10
+ @browser.goto(HTML_DIR + "/non_control_elements.html")
11
+ end
12
+
13
+ describe "#length" do
14
+ it "returns the number of ols" do
15
+ @browser.ols.length.should == 2
16
+ end
17
+ end
18
+
19
+ describe "#[]" do
20
+ it "returns the ol at the given index" do
21
+ @browser.ols[1].id.should == "favorite_compounds"
22
+ end
23
+ end
24
+
25
+ describe "#each" do
26
+ it "iterates through ols correctly" do
27
+ @browser.ols.each_with_index do |ul, index|
28
+ ul.name.should == @browser.ol(:index, index+1).name
29
+ ul.id.should == @browser.ol(:index, index+1).id
30
+ ul.value.should == @browser.ol(:index, index+1).value
31
+ end
32
+ end
33
+ end
34
+
35
+ after :all do
36
+ @browser.close
37
+ end
38
+
39
+ end
40
+
@@ -0,0 +1,156 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Option" do
4
+
5
+ before :all do
6
+ @browser = Browser.new(BROWSER_OPTIONS)
7
+ end
8
+
9
+ before :each do
10
+ @browser.goto(HTML_DIR + "/forms_with_input_elements.html")
11
+ end
12
+
13
+ describe "#exists?" do
14
+ it "returns true if the element exists (page context)" do
15
+ @browser.option(:id, "nor").should exist
16
+ @browser.option(:id, /nor/).should exist
17
+ @browser.option(:value, "2").should exist
18
+ @browser.option(:value, /2/).should exist
19
+ @browser.option(:text, "Norway").should exist
20
+ @browser.option(:text, /Norway/).should exist
21
+ @browser.option(:class, "scandinavia").should exist
22
+ @browser.option(:index, 2).should exist
23
+ @browser.option(:xpath, "//option[@id='nor']").should exist
24
+ end
25
+
26
+ it "returns true if the element exists (select_list context)" do
27
+ @browser.select_list(:name, "new_user_country").option(:id, "nor").should exist
28
+ @browser.select_list(:name, "new_user_country").option(:id, /nor/).should exist
29
+ @browser.select_list(:name, "new_user_country").option(:value, "2").should exist
30
+ @browser.select_list(:name, "new_user_country").option(:value, /2/).should exist
31
+ @browser.select_list(:name, "new_user_country").option(:text, "Norway").should exist
32
+ @browser.select_list(:name, "new_user_country").option(:text, /Norway/).should exist
33
+ @browser.select_list(:name, "new_user_country").option(:class, "scandinavia").should exist
34
+ @browser.select_list(:name, "new_user_country").option(:index, 2).should exist
35
+ @browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='nor']").should exist
36
+ @browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='nor']").should exist
37
+ @browser.select_list(:name, "new_user_country").option(:label, "Germany").should exist
38
+ end
39
+
40
+ it "returns true if the element exists (default how = :text)" do
41
+ @browser.option("Swedish").should exist
42
+ @browser.select_list(:name, "new_user_languages").option("Swedish").should exist
43
+ end
44
+
45
+ it "returns false if the element does not exist (page context)" do
46
+ @browser.option(:id, "no_such_id").should_not exist
47
+ @browser.option(:id, /no_such_id/).should_not exist
48
+ @browser.option(:value, "no_such_value").should_not exist
49
+ @browser.option(:value, /no_such_value/).should_not exist
50
+ @browser.option(:text, "no_such_text").should_not exist
51
+ @browser.option(:text, /no_such_text/).should_not exist
52
+ @browser.option(:class, "no_such_class").should_not exist
53
+ @browser.option(:index, 1337).should_not exist
54
+ @browser.option(:xpath, "//option[@id='no_such_id']").should_not exist
55
+ end
56
+
57
+ it "returns false if the element does not exist (select_list context)" do
58
+ @browser.select_list(:name, "new_user_country").option(:id, "no_such_id").should_not exist
59
+ @browser.select_list(:name, "new_user_country").option(:id, /no_such_id/).should_not exist
60
+ @browser.select_list(:name, "new_user_country").option(:value, "no_such_value").should_not exist
61
+ @browser.select_list(:name, "new_user_country").option(:value, /no_such_value/).should_not exist
62
+ @browser.select_list(:name, "new_user_country").option(:text, "no_such_text").should_not exist
63
+ @browser.select_list(:name, "new_user_country").option(:text, /no_such_text/).should_not exist
64
+ @browser.select_list(:name, "new_user_country").option(:class, "no_such_class").should_not exist
65
+ @browser.select_list(:name, "new_user_country").option(:index, 1337).should_not exist
66
+ @browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='no_such_id']").should_not exist
67
+ end
68
+
69
+ it "raises TypeError when 'what' argument is invalid" do
70
+ lambda { @browser.option(:id, 3.14).exists? }.should raise_error(TypeError)
71
+ lambda { @browser.select_list(:name, "new_user_country").option(:id, 3.14).exists? }.should raise_error(TypeError)
72
+ end
73
+
74
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
75
+ lambda { @browser.option(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
76
+ lambda { @browser.select_list(:name, "new_user_country").option(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
77
+ end
78
+ end
79
+
80
+ describe "#select" do
81
+ it "shoulds be able to select the chosen option (page context)" do
82
+ @browser.select_list(:name, "new_user_country").clear_selection
83
+ @browser.option(:text, "Denmark").select
84
+ @browser.select_list(:name, "new_user_country").selected_options.should == ["Denmark"]
85
+ end
86
+
87
+ it "shoulds be able to select the chosen option (select_list context)" do
88
+ @browser.select_list(:name, "new_user_country").clear_selection
89
+ @browser.select_list(:name, "new_user_country").option(:text, "Denmark").select
90
+ @browser.select_list(:name, "new_user_country").selected_options.should == ["Denmark"]
91
+ end
92
+
93
+ it "selects the option when found by text (page context)" do
94
+ @browser.option(:text, 'Sweden').select
95
+ @browser.option(:text, 'Sweden').should be_selected
96
+ end
97
+
98
+ it "selects the option when found by text (select_list context)" do
99
+ @browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').select
100
+ @browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').should be_selected
101
+ end
102
+
103
+ it "fires onclick event (page context)" do
104
+ @browser.option(:text, "Username 3").select
105
+ @browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
106
+ end
107
+
108
+ it "fires onclick event (select_list context)" do
109
+ @browser.select_list(:id, 'delete_user_username').option(:text, "Username 3").select
110
+ @browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
111
+ end
112
+
113
+ it "raises UnknownObjectException if the option does not exist (page context)" do
114
+ lambda { @browser.option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
115
+ lambda { @browser.option(:text, /missing/).select }.should raise_error(UnknownObjectException)
116
+ end
117
+
118
+ it "raises UnknownObjectException if the option does not exist (select_list context)" do
119
+ lambda { @browser.select_list(:name, "new_user_country").option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
120
+ lambda { @browser.select_list(:name, "new_user_country").option(:text, /missing/).select }.should raise_error(UnknownObjectException)
121
+ end
122
+
123
+ it "raises MissingWayOfFindingObjectException when given a bad 'how' (page context)" do
124
+ lambda { @browser.option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
125
+ end
126
+
127
+ it "raises MissingWayOfFindingObjectException when given a bad 'how' (select_list context)" do
128
+ lambda { @browser.select_list(:name, "new_user_country").option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
129
+ end
130
+ end
131
+
132
+ describe "#class_name" do
133
+ it "is able to get attributes (page context)" do
134
+ @browser.option(:text, 'Sweden').class_name.should == "scandinavia"
135
+ end
136
+
137
+ it "is able to get attributes (select_list context)" do
138
+ @browser.select_list(:name, "new_user_country").option(:text , 'Sweden').class_name.should == "scandinavia"
139
+ end
140
+ end
141
+
142
+ describe "#respond_to?" do
143
+ it "returns true for all attribute methods" do
144
+ @browser.option(:index, 1).should respond_to(:class_name)
145
+ @browser.option(:index, 1).should respond_to(:id)
146
+ @browser.option(:index, 1).should respond_to(:text)
147
+ @browser.option(:index, 1).should respond_to(:name)
148
+ end
149
+ end
150
+
151
+
152
+ after :all do
153
+ @browser.close
154
+ end
155
+
156
+ end
@@ -0,0 +1,171 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "P" do
4
+
5
+ before :all do
6
+ @browser = Browser.new(BROWSER_OPTIONS)
7
+ end
8
+
9
+ before :each do
10
+ @browser.goto(HTML_DIR + "/non_control_elements.html")
11
+ end
12
+
13
+ # Exists method
14
+ describe "#exist?" do
15
+ it "returns true if the 'p' exists" do
16
+ @browser.p(:id, "lead").should exist
17
+ @browser.p(:id, /lead/).should exist
18
+ @browser.p(:text, "Dubito, ergo cogito, ergo sum.").should exist
19
+ @browser.p(:text, /Dubito, ergo cogito, ergo sum/).should exist
20
+ @browser.p(:class, "lead").should exist
21
+ @browser.p(:class, /lead/).should exist
22
+ @browser.p(:index, 1).should exist
23
+ @browser.p(:xpath, "//p[@id='lead']").should exist
24
+ end
25
+
26
+ it "returns true if the element exists (default how = :id)" do
27
+ @browser.p("lead").should exist
28
+ end
29
+
30
+ it "returns false if the 'p' doesn't exist" do
31
+ @browser.p(:id, "no_such_id").should_not exist
32
+ @browser.p(:id, /no_such_id/).should_not exist
33
+ @browser.p(:text, "no_such_text").should_not exist
34
+ @browser.p(:text, /no_such_text/).should_not exist
35
+ @browser.p(:class, "no_such_class").should_not exist
36
+ @browser.p(:class, /no_such_class/).should_not exist
37
+ @browser.p(:index, 1337).should_not exist
38
+ @browser.p(:xpath, "//p[@id='no_such_id']").should_not exist
39
+ end
40
+
41
+ it "raises TypeError when 'what' argument is invalid" do
42
+ lambda { @browser.p(:id, 3.14).exists? }.should raise_error(TypeError)
43
+ end
44
+
45
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
46
+ lambda { @browser.p(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
47
+ end
48
+ end
49
+
50
+ # Attribute methods
51
+ describe "#class_name" do
52
+ it "returns the class attribute" do
53
+ @browser.p(:index, 1).class_name.should == 'lead'
54
+ end
55
+
56
+ it "returns an empty string if the element exists and the attribute doesn't" do
57
+ @browser.p(:index, 3).class_name.should == ''
58
+ end
59
+
60
+ it "raises UnknownObjectException if the p doesn't exist" do
61
+ lambda { @browser.p(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
62
+ end
63
+ end
64
+
65
+ describe "#id" do
66
+ it "returns the id attribute" do
67
+ @browser.p(:index, 1).id.should == "lead"
68
+ end
69
+
70
+ it "returns an empty string if the element exists and the attribute doesn't" do
71
+ @browser.p(:index, 3).id.should == ''
72
+ end
73
+
74
+ it "raises UnknownObjectException if the p doesn't exist" do
75
+ lambda { @browser.p(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
76
+ lambda { @browser.p(:index, 1337).id }.should raise_error(UnknownObjectException)
77
+ end
78
+ end
79
+
80
+ describe "#name" do
81
+ it "returns the name attribute" do
82
+ @browser.p(:index, 2).name.should == "invalid_attribute"
83
+ end
84
+
85
+ it "returns an empty string if the element exists and the attribute doesn't" do
86
+ @browser.p(:index, 3).name.should == ''
87
+ end
88
+
89
+ it "raises UnknownObjectException if the p doesn't exist" do
90
+ lambda { @browser.p(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
91
+ lambda { @browser.p(:index, 1337).name }.should raise_error(UnknownObjectException)
92
+ end
93
+ end
94
+
95
+ describe "#title" do
96
+ it "returns the title attribute" do
97
+ @browser.p(:index, 1).title.should == 'Lorem ipsum'
98
+ end
99
+
100
+ it "returns an empty string if the element exists and the attribute doesn't" do
101
+ @browser.p(:index, 3).title.should == ''
102
+ end
103
+
104
+ it "raises UnknownObjectException if the p doesn't exist" do
105
+ lambda { @browser.p(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
106
+ lambda { @browser.p(:xpath, "//p[@id='no_such_id']").title }.should raise_error( UnknownObjectException)
107
+ end
108
+ end
109
+
110
+ describe "#text" do
111
+ it "returns the text of the p" do
112
+ @browser.p(:index, 2).text.should == 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.'
113
+ end
114
+
115
+ it "returns an empty string if the element doesn't contain any text" do
116
+ @browser.p(:index, 5).text.should == ''
117
+ end
118
+
119
+ it "raises UnknownObjectException if the p doesn't exist" do
120
+ lambda { @browser.p(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
121
+ lambda { @browser.p(:xpath , "//p[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
122
+ end
123
+ end
124
+
125
+ describe "#value" do
126
+ it "returns the value attribute" do
127
+ @browser.p(:index, 2).value.should == "invalid_attribute"
128
+ end
129
+
130
+ it "returns an empty string if the element exists and the attribute doesn't" do
131
+ @browser.p(:index, 3).value.should == ''
132
+ end
133
+
134
+ it "raises UnknownObjectException if the p doesn't exist" do
135
+ lambda { @browser.p(:id , "no_such_id").value }.should raise_error(UnknownObjectException)
136
+ lambda { @browser.p(:index , 1337).value }.should raise_error(UnknownObjectException)
137
+ end
138
+ end
139
+
140
+ describe "#respond_to?" do
141
+ it "returns true for all attribute methods" do
142
+ @browser.p(:index, 1).should respond_to(:class_name)
143
+ @browser.p(:index, 1).should respond_to(:id)
144
+ @browser.p(:index, 1).should respond_to(:name)
145
+ @browser.p(:index, 1).should respond_to(:title)
146
+ @browser.p(:index, 1).should respond_to(:text)
147
+ @browser.p(:index, 1).should respond_to(:value)
148
+ end
149
+ end
150
+
151
+
152
+ # Other
153
+ describe "#to_s" do
154
+ it "returns a human readable representation of the element" do
155
+ @browser.p(:index, 1).to_s.should == "tag: p\n" +
156
+ " id: lead\n" +
157
+ " class: lead\n" +
158
+ " title: Lorem ipsum\n" +
159
+ " text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc."
160
+ end
161
+
162
+ it "raises UnknownObjectException if the p doesn't exist" do
163
+ lambda { @browser.p(:xpath, "//p[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
164
+ end
165
+ end
166
+
167
+ after :all do
168
+ @browser.close
169
+ end
170
+
171
+ end
@@ -0,0 +1,135 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Pre" do
4
+
5
+ before :all do
6
+ @browser = Browser.new(BROWSER_OPTIONS)
7
+ end
8
+
9
+ before :each do
10
+ @browser.goto(HTML_DIR + "/non_control_elements.html")
11
+ end
12
+
13
+ # Exists method
14
+ describe "#exist?" do
15
+ it "returns true if the 'p' exists" do
16
+ @browser.pre(:id, "rspec").should exist
17
+ @browser.pre(:id, /rspec/).should exist
18
+ @browser.pre(:text, '@browser.pre(:id, "rspec").should exist').should exist
19
+ @browser.pre(:text, /@browser\.pre/).should exist
20
+ @browser.pre(:class, "ruby").should exist
21
+ @browser.pre(:class, /ruby/).should exist
22
+ @browser.pre(:index, 1).should exist
23
+ @browser.pre(:xpath, "//pre[@id='rspec']").should exist
24
+ end
25
+
26
+ it "returns true if the element exists (default how = :id)" do
27
+ @browser.pre("rspec").should exist
28
+ end
29
+
30
+ it "returns false if the 'p' doesn't exist" do
31
+ @browser.pre(:id, "no_such_id").should_not exist
32
+ @browser.pre(:id, /no_such_id/).should_not exist
33
+ @browser.pre(:text, "no_such_text").should_not exist
34
+ @browser.pre(:text, /no_such_text/).should_not exist
35
+ @browser.pre(:class, "no_such_class").should_not exist
36
+ @browser.pre(:class, /no_such_class/).should_not exist
37
+ @browser.pre(:index, 1337).should_not exist
38
+ @browser.pre(:xpath, "//pre[@id='no_such_id']").should_not exist
39
+ end
40
+
41
+ it "raises TypeError when 'what' argument is invalid" do
42
+ lambda { @browser.pre(:id, 3.14).exists? }.should raise_error(TypeError)
43
+ end
44
+
45
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
46
+ lambda { @browser.pre(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
47
+ end
48
+ end
49
+
50
+ # Attribute methods
51
+ describe "#class_name" do
52
+ it "returns the class attribute" do
53
+ @browser.pre(:id, 'rspec').class_name.should == 'ruby'
54
+ end
55
+
56
+ it "returns an empty string if the element exists and the attribute doesn't" do
57
+ @browser.pre(:index, 1).class_name.should == ''
58
+ end
59
+
60
+ it "raises UnknownObjectException if the p doesn't exist" do
61
+ lambda { @browser.pre(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
62
+ end
63
+ end
64
+
65
+ describe "#id" do
66
+ it "returns the id attribute" do
67
+ @browser.pre(:class, 'ruby').id.should == "rspec"
68
+ end
69
+
70
+ it "returns an empty string if the element exists and the attribute doesn't" do
71
+ @browser.pre(:index, 1).id.should == ''
72
+ end
73
+
74
+ it "raises UnknownObjectException if the p doesn't exist" do
75
+ lambda { @browser.pre(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
76
+ lambda { @browser.pre(:index, 1337).id }.should raise_error(UnknownObjectException)
77
+ end
78
+ end
79
+
80
+ describe "#title" do
81
+ it "returns the title attribute" do
82
+ @browser.pre(:class, 'brainfuck').title.should == 'The brainfuck language is an esoteric programming language noted for its extreme minimalism'
83
+ end
84
+
85
+ it "returns an empty string if the element exists and the attribute doesn't" do
86
+ @browser.pre(:index, 1).title.should == ''
87
+ end
88
+
89
+ it "raises UnknownObjectException if the p doesn't exist" do
90
+ lambda { @browser.pre(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
91
+ lambda { @browser.pre(:xpath, "//pre[@id='no_such_id']").title }.should raise_error( UnknownObjectException)
92
+ end
93
+ end
94
+
95
+ describe "#text" do
96
+ it "returns the text of the p" do
97
+ @browser.pre(:class, 'haskell').text.should == 'main = putStrLn "Hello World"'
98
+ end
99
+
100
+ it "returns an empty string if the element doesn't contain any text" do
101
+ @browser.pre(:index, 1).text.should == ''
102
+ end
103
+
104
+ it "raises UnknownObjectException if the p doesn't exist" do
105
+ lambda { @browser.pre(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
106
+ lambda { @browser.pre(:xpath , "//pre[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
107
+ end
108
+ end
109
+
110
+ describe "#respond_to?" do
111
+ it "returns true for all attribute methods" do
112
+ @browser.image(:index, 1).should respond_to(:class_name)
113
+ @browser.image(:index, 1).should respond_to(:id)
114
+ @browser.image(:index, 1).should respond_to(:title)
115
+ @browser.image(:index, 1).should respond_to(:text)
116
+ end
117
+ end
118
+
119
+
120
+ # Other
121
+ describe "#to_s" do
122
+ it "returns a human readable representation of the element" do
123
+ @browser.pre(:index, 1).to_s.should == "tag: pre"
124
+ end
125
+
126
+ it "raises UnknownObjectException if the p doesn't exist" do
127
+ lambda { @browser.pre(:xpath, "//pre[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
128
+ end
129
+ end
130
+
131
+ after :all do
132
+ @browser.close
133
+ end
134
+
135
+ end