meeane-page-object 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +10 -0
  7. data/ChangeLog +790 -0
  8. data/Gemfile +13 -0
  9. data/Guardfile +20 -0
  10. data/LICENSE +20 -0
  11. data/README.md +141 -0
  12. data/Rakefile +35 -0
  13. data/cucumber.yml +10 -0
  14. data/features/area.feature +35 -0
  15. data/features/async.feature +30 -0
  16. data/features/audio.feature +68 -0
  17. data/features/button.feature +87 -0
  18. data/features/canvas.feature +37 -0
  19. data/features/check_box.feature +55 -0
  20. data/features/div.feature +45 -0
  21. data/features/element.feature +322 -0
  22. data/features/file_field.feature +40 -0
  23. data/features/form.feature +43 -0
  24. data/features/frames.feature +75 -0
  25. data/features/generic_elements.feature +29 -0
  26. data/features/gxt_table_extension.feature +24 -0
  27. data/features/headings.feature +97 -0
  28. data/features/hidden_field.feature +45 -0
  29. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  30. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  31. data/features/html/async.html +36 -0
  32. data/features/html/double_click.html +13 -0
  33. data/features/html/failure.html +8 -0
  34. data/features/html/frame_1.html +18 -0
  35. data/features/html/frame_2.html +16 -0
  36. data/features/html/frame_3.html +14 -0
  37. data/features/html/frames.html +12 -0
  38. data/features/html/hover.html +12 -0
  39. data/features/html/iframes.html +12 -0
  40. data/features/html/images/circle.png +0 -0
  41. data/features/html/images/img_pulpit.jpg +0 -0
  42. data/features/html/images/submit.gif +0 -0
  43. data/features/html/indexed_property.html +52 -0
  44. data/features/html/modal.html +17 -0
  45. data/features/html/modal_1.html +38 -0
  46. data/features/html/modal_2.html +27 -0
  47. data/features/html/movie.mp4 +0 -0
  48. data/features/html/movie.ogg +0 -0
  49. data/features/html/multi_elements.html +144 -0
  50. data/features/html/nested_elements.html +77 -0
  51. data/features/html/nested_frame_1.html +1 -0
  52. data/features/html/nested_frame_2.html +11 -0
  53. data/features/html/nested_frame_3.html +14 -0
  54. data/features/html/nested_frames.html +10 -0
  55. data/features/html/planets.gif +0 -0
  56. data/features/html/static_elements.html +206 -0
  57. data/features/html/success.html +8 -0
  58. data/features/html/sun.gif +0 -0
  59. data/features/html/sun.html +7 -0
  60. data/features/image.feature +50 -0
  61. data/features/indexed_property.feature +98 -0
  62. data/features/javascript.feature +28 -0
  63. data/features/label.feature +46 -0
  64. data/features/link.feature +52 -0
  65. data/features/list_item.feature +36 -0
  66. data/features/modal_dialog.feature +15 -0
  67. data/features/multi_elements.feature +486 -0
  68. data/features/nested_elements.feature +117 -0
  69. data/features/ordered_list.feature +56 -0
  70. data/features/page_level_actions.feature +90 -0
  71. data/features/paragraph.feature +35 -0
  72. data/features/radio_button.feature +58 -0
  73. data/features/radio_button_group.feature +29 -0
  74. data/features/sample-app/public/jquery-1.3.2.js +4376 -0
  75. data/features/sample-app/public/jquery.html +30 -0
  76. data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
  77. data/features/sample-app/public/prototype.html +35 -0
  78. data/features/sample-app/sample_app.rb +35 -0
  79. data/features/select_list.feature +86 -0
  80. data/features/span.feature +37 -0
  81. data/features/step_definitions/accessor_steps.rb +60 -0
  82. data/features/step_definitions/area_steps.rb +19 -0
  83. data/features/step_definitions/async_steps.rb +83 -0
  84. data/features/step_definitions/audio_steps.rb +27 -0
  85. data/features/step_definitions/button_steps.rb +43 -0
  86. data/features/step_definitions/canvas_steps.rb +15 -0
  87. data/features/step_definitions/check_box_steps.rb +35 -0
  88. data/features/step_definitions/div_steps.rb +19 -0
  89. data/features/step_definitions/element_steps.rb +266 -0
  90. data/features/step_definitions/file_field_steps.rb +19 -0
  91. data/features/step_definitions/form_steps.rb +19 -0
  92. data/features/step_definitions/frames_steps.rb +159 -0
  93. data/features/step_definitions/generic_element_steps.rb +31 -0
  94. data/features/step_definitions/gxt_table_steps.rb +58 -0
  95. data/features/step_definitions/headings_steps.rb +12 -0
  96. data/features/step_definitions/hidden_field_steps.rb +27 -0
  97. data/features/step_definitions/image_steps.rb +27 -0
  98. data/features/step_definitions/indexed_property_steps.rb +129 -0
  99. data/features/step_definitions/javascript_steps.rb +53 -0
  100. data/features/step_definitions/label_steps.rb +19 -0
  101. data/features/step_definitions/link_steps.rb +40 -0
  102. data/features/step_definitions/list_item_steps.rb +19 -0
  103. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  104. data/features/step_definitions/multi_elements_steps.rb +528 -0
  105. data/features/step_definitions/nested_elements_steps.rb +212 -0
  106. data/features/step_definitions/ordered_list_steps.rb +23 -0
  107. data/features/step_definitions/page_level_actions_steps.rb +135 -0
  108. data/features/step_definitions/page_traversal_steps.rb +4 -0
  109. data/features/step_definitions/paragraph_steps.rb +28 -0
  110. data/features/step_definitions/radio_button_group_steps.rb +36 -0
  111. data/features/step_definitions/radio_button_steps.rb +27 -0
  112. data/features/step_definitions/select_list_steps.rb +65 -0
  113. data/features/step_definitions/span_steps.rb +19 -0
  114. data/features/step_definitions/table_cell_steps.rb +15 -0
  115. data/features/step_definitions/table_steps.rb +66 -0
  116. data/features/step_definitions/text_area_steps.rb +35 -0
  117. data/features/step_definitions/text_field_steps.rb +35 -0
  118. data/features/step_definitions/unordered_list_steps.rb +23 -0
  119. data/features/step_definitions/video_steps.rb +45 -0
  120. data/features/support/ajax_text_environment.rb +26 -0
  121. data/features/support/env.rb +8 -0
  122. data/features/support/hooks.rb +8 -0
  123. data/features/support/page.rb +364 -0
  124. data/features/support/persistent_browser.rb +70 -0
  125. data/features/support/targets/firefox14_osx.rb +6 -0
  126. data/features/support/targets/firefox14_windows7.rb +6 -0
  127. data/features/support/url_helper.rb +57 -0
  128. data/features/table.feature +114 -0
  129. data/features/table_cell.feature +45 -0
  130. data/features/text_area.feature +51 -0
  131. data/features/text_field.feature +70 -0
  132. data/features/unordered_list.feature +56 -0
  133. data/features/video.feature +73 -0
  134. data/lib/page-object/accessors.rb +1313 -0
  135. data/lib/page-object/core_ext/string.rb +5 -0
  136. data/lib/page-object/element_locators.rb +21 -0
  137. data/lib/page-object/elements/area.rb +31 -0
  138. data/lib/page-object/elements/audio.rb +9 -0
  139. data/lib/page-object/elements/button.rb +35 -0
  140. data/lib/page-object/elements/canvas.rb +23 -0
  141. data/lib/page-object/elements/check_box.rb +37 -0
  142. data/lib/page-object/elements/div.rb +19 -0
  143. data/lib/page-object/elements/element.rb +226 -0
  144. data/lib/page-object/elements/file_field.rb +38 -0
  145. data/lib/page-object/elements/form.rb +36 -0
  146. data/lib/page-object/elements/heading.rb +15 -0
  147. data/lib/page-object/elements/hidden_field.rb +22 -0
  148. data/lib/page-object/elements/image.rb +36 -0
  149. data/lib/page-object/elements/label.rb +36 -0
  150. data/lib/page-object/elements/link.rb +46 -0
  151. data/lib/page-object/elements/list_item.rb +19 -0
  152. data/lib/page-object/elements/media.rb +45 -0
  153. data/lib/page-object/elements/option.rb +10 -0
  154. data/lib/page-object/elements/ordered_list.rb +50 -0
  155. data/lib/page-object/elements/paragraph.rb +9 -0
  156. data/lib/page-object/elements/radio_button.rb +37 -0
  157. data/lib/page-object/elements/select_list.rb +42 -0
  158. data/lib/page-object/elements/span.rb +19 -0
  159. data/lib/page-object/elements/table.rb +68 -0
  160. data/lib/page-object/elements/table_cell.rb +28 -0
  161. data/lib/page-object/elements/table_row.rb +50 -0
  162. data/lib/page-object/elements/text_area.rb +38 -0
  163. data/lib/page-object/elements/text_field.rb +42 -0
  164. data/lib/page-object/elements/unordered_list.rb +51 -0
  165. data/lib/page-object/elements/video.rb +18 -0
  166. data/lib/page-object/elements.rb +59 -0
  167. data/lib/page-object/indexed_properties.rb +36 -0
  168. data/lib/page-object/javascript/jquery.rb +14 -0
  169. data/lib/page-object/javascript/prototype.rb +14 -0
  170. data/lib/page-object/javascript/yui.rb +19 -0
  171. data/lib/page-object/javascript_framework_facade.rb +78 -0
  172. data/lib/page-object/loads_platform.rb +26 -0
  173. data/lib/page-object/locator_generator.rb +129 -0
  174. data/lib/page-object/nested_elements.rb +17 -0
  175. data/lib/page-object/page_factory.rb +108 -0
  176. data/lib/page-object/page_populator.rb +92 -0
  177. data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
  178. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
  179. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
  180. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
  181. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
  182. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
  183. data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -0
  184. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
  185. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
  186. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -0
  187. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
  188. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
  189. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
  190. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
  191. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
  192. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
  193. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
  194. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
  195. data/lib/page-object/platforms/selenium_webdriver.rb +18 -0
  196. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
  197. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
  198. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
  199. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
  200. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
  201. data/lib/page-object/platforms/watir_webdriver/label.rb +17 -0
  202. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
  203. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
  204. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -0
  205. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
  206. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
  207. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
  208. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
  209. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
  210. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
  211. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
  212. data/lib/page-object/platforms/watir_webdriver.rb +18 -0
  213. data/lib/page-object/platforms.rb +18 -0
  214. data/lib/page-object/version.rb +4 -0
  215. data/lib/page-object/widgets.rb +133 -0
  216. data/lib/page-object.rb +408 -0
  217. data/meeane-page-object.gemspec +32 -0
  218. data/pageobject.gems +1 -0
  219. data/spec/page-object/element_locators_spec.rb +1065 -0
  220. data/spec/page-object/elements/area_spec.rb +45 -0
  221. data/spec/page-object/elements/button_spec.rb +50 -0
  222. data/spec/page-object/elements/canvas_spec.rb +40 -0
  223. data/spec/page-object/elements/check_box_spec.rb +49 -0
  224. data/spec/page-object/elements/div_spec.rb +28 -0
  225. data/spec/page-object/elements/element_spec.rb +114 -0
  226. data/spec/page-object/elements/file_field_spec.rb +39 -0
  227. data/spec/page-object/elements/form_spec.rb +28 -0
  228. data/spec/page-object/elements/heading_spec.rb +48 -0
  229. data/spec/page-object/elements/hidden_field_spec.rb +28 -0
  230. data/spec/page-object/elements/image_spec.rb +66 -0
  231. data/spec/page-object/elements/label_spec.rb +29 -0
  232. data/spec/page-object/elements/link_spec.rb +49 -0
  233. data/spec/page-object/elements/list_item_spec.rb +28 -0
  234. data/spec/page-object/elements/nested_element_spec.rb +254 -0
  235. data/spec/page-object/elements/option_spec.rb +11 -0
  236. data/spec/page-object/elements/ordered_list_spec.rb +94 -0
  237. data/spec/page-object/elements/paragraph_spec.rb +28 -0
  238. data/spec/page-object/elements/select_list_spec.rb +142 -0
  239. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
  240. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
  241. data/spec/page-object/elements/selenium_element_spec.rb +172 -0
  242. data/spec/page-object/elements/span_spec.rb +26 -0
  243. data/spec/page-object/elements/table_cell_spec.rb +21 -0
  244. data/spec/page-object/elements/table_row_spec.rb +70 -0
  245. data/spec/page-object/elements/table_spec.rb +98 -0
  246. data/spec/page-object/elements/text_area_spec.rb +39 -0
  247. data/spec/page-object/elements/unordered_list_spec.rb +95 -0
  248. data/spec/page-object/elements/watir_element_spec.rb +142 -0
  249. data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
  250. data/spec/page-object/loads_platform_spec.rb +53 -0
  251. data/spec/page-object/page-object_spec.rb +405 -0
  252. data/spec/page-object/page_factory_spec.rb +256 -0
  253. data/spec/page-object/page_populator_spec.rb +122 -0
  254. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
  255. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  256. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  257. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
  258. data/spec/page-object/selenium_accessors_spec.rb +589 -0
  259. data/spec/page-object/watir_accessors_spec.rb +1107 -0
  260. data/spec/page-object/widget_spec.rb +226 -0
  261. data/spec/spec_helper.rb +44 -0
  262. metadata +404 -0
@@ -0,0 +1,1107 @@
1
+ require 'spec_helper'
2
+
3
+ class WatirAccessorsTestPageObject
4
+ include PageObject
5
+
6
+ page_url "http://apple.com"
7
+ expected_title "Expected Title"
8
+ expected_element :google_search
9
+ link(:google_search, :link => 'Google Search')
10
+ text_field(:first_name, :id => 'first_name')
11
+ hidden_field(:social_security_number, :id => 'ssn')
12
+ text_area(:address, :id => 'address')
13
+ select_list(:state, :id => 'state')
14
+ checkbox(:active, :id => 'is_active_id')
15
+ radio_button(:first, :id => 'first_choice')
16
+ button(:click_me, :id => 'button_submit')
17
+ div(:message, :id => 'message_id')
18
+ table(:cart, :id => 'cart_id')
19
+ cell(:total, :id => 'total')
20
+ span(:alert_span, :id => 'alert_id')
21
+ image(:logo, :id => 'logo')
22
+ form(:login, :id => 'login')
23
+ list_item(:item_one, :id => 'one')
24
+ unordered_list(:menu, :id => 'main_menu')
25
+ ordered_list(:top_five, :id => 'top')
26
+ h1(:heading1, :id => 'main_heading')
27
+ h2(:heading2, :id => 'main_heading')
28
+ h3(:heading3, :id => 'main_heading')
29
+ h4(:heading4, :id => 'main_heading')
30
+ h5(:heading5, :id => 'main_heading')
31
+ h6(:heading6, :id => 'main_heading')
32
+ paragraph(:first_para, :id => 'first')
33
+ file_field(:upload_me, :id => 'the_file')
34
+ area(:img_area, :id => 'area')
35
+ canvas(:my_canvas, :id => 'canvas_id')
36
+ audio(:acdc, :id => 'audio_id')
37
+ video(:movie, :id => 'video_id')
38
+ end
39
+
40
+ class WatirBlockPageObject
41
+ include PageObject
42
+
43
+ attr_reader :value
44
+
45
+ text_field :first_name do |element|
46
+ "text_field"
47
+ end
48
+ hidden_field :secret do |element|
49
+ "hidden_field"
50
+ end
51
+ text_area :address do |element|
52
+ "text_area"
53
+ end
54
+ select_list :state do |element|
55
+ "select_list"
56
+ end
57
+ link :continue do |element|
58
+ "link"
59
+ end
60
+ checkbox :active do |element|
61
+ "checkbox"
62
+ end
63
+ radio_button :first do |element|
64
+ "radio_button"
65
+ end
66
+ button :click_me do |element|
67
+ "button"
68
+ end
69
+ div :footer do |element|
70
+ "div"
71
+ end
72
+ span :alert_span do |element|
73
+ "span"
74
+ end
75
+ table :cart do |element|
76
+ "table"
77
+ end
78
+ cell :total do |element|
79
+ "cell"
80
+ end
81
+ image :logo do |element|
82
+ "image"
83
+ end
84
+ form :login do |element|
85
+ "form"
86
+ end
87
+ list_item :item_one do |element|
88
+ "list_item"
89
+ end
90
+ unordered_list :menu do |element|
91
+ "unordered_list"
92
+ end
93
+ ordered_list :top_five do |element|
94
+ "ordered_list"
95
+ end
96
+ h1 :heading1 do |element|
97
+ "h1"
98
+ end
99
+ h2 :heading2 do |element|
100
+ "h2"
101
+ end
102
+ h3 :heading3 do |element|
103
+ "h3"
104
+ end
105
+ h4 :heading4 do |element|
106
+ "h4"
107
+ end
108
+ h5 :heading5 do |element|
109
+ "h5"
110
+ end
111
+ h6 :heading6 do |element|
112
+ "h6"
113
+ end
114
+ paragraph :first_para do |element|
115
+ "p"
116
+ end
117
+ file_field :a_file do |element|
118
+ "file_field"
119
+ end
120
+ area :img_area do |element|
121
+ "area"
122
+ end
123
+ canvas :my_canvas do |element|
124
+ "canvas"
125
+ end
126
+ audio :acdc do |element|
127
+ "audio"
128
+ end
129
+ video :movie do |element|
130
+ "video"
131
+ end
132
+ end
133
+
134
+ describe PageObject::Accessors do
135
+ let(:watir_browser) { mock_watir_browser }
136
+ let(:watir_page_object) { WatirAccessorsTestPageObject.new(watir_browser) }
137
+ let(:block_page_object) { WatirBlockPageObject.new(watir_browser) }
138
+
139
+ context "goto a page" do
140
+
141
+ it "should navigate to a page when requested" do
142
+ watir_browser.should_receive(:goto)
143
+ WatirAccessorsTestPageObject.new(watir_browser, true)
144
+ end
145
+
146
+ it "should call a method when page_url called with a symbol" do
147
+ class SymbolPageUrl
148
+ include PageObject
149
+ page_url :custom_url
150
+
151
+ attr_reader :custom_url
152
+ def initialize(b, v, url)
153
+ @custom_url = url
154
+ super(b, v)
155
+ end
156
+ end
157
+ watir_browser.should_receive(:goto).with('custom')
158
+ SymbolPageUrl.new(watir_browser, true, 'custom')
159
+
160
+ watir_browser.should_receive(:goto).with('different')
161
+ SymbolPageUrl.new(watir_browser, true, 'different')
162
+ end
163
+
164
+ it "should not navigate to a page when not requested" do
165
+ watir_browser.should_not_receive(:goto)
166
+ WatirAccessorsTestPageObject.new(watir_browser)
167
+ end
168
+
169
+ it "should not navigate to a page when 'page_url' not specified" do
170
+ watir_browser.should_not_receive(:goto)
171
+ WatirBlockPageObject.new(watir_browser, true)
172
+ end
173
+
174
+ it "should provide the page url" do
175
+ watir_page_object.page_url_value.should == 'http://apple.com'
176
+ end
177
+ end
178
+
179
+ context "validating the page title" do
180
+ it "should validate the title" do
181
+ watir_browser.should_receive(:title).and_return("Expected Title")
182
+ watir_page_object.should have_expected_title
183
+ end
184
+
185
+ it "should validate the by regexp" do
186
+ class RegexpExpectedTitle
187
+ include PageObject
188
+ expected_title /\w+ \w+/
189
+ end
190
+ watir_browser.should_receive(:title).and_return("Expected Title")
191
+ RegexpExpectedTitle.new(watir_browser).should have_expected_title
192
+ end
193
+
194
+ it "should raise error when it does not have expected title" do
195
+ watir_browser.should_receive(:title).once.and_return("Not Expected")
196
+ expect { watir_page_object.has_expected_title? }.to raise_error
197
+ end
198
+ end
199
+
200
+ context "validating the existence of an element" do
201
+ it "should validate an element exists" do
202
+ watir_page_object.should_receive(:google_search_element).and_return(watir_browser)
203
+ watir_browser.should_receive(:when_present).and_return(true)
204
+ watir_page_object.has_expected_element?
205
+ end
206
+
207
+ it "should handle non-existent elements gracefully" do
208
+ class FakePage
209
+ include PageObject
210
+ expected_element :foo
211
+ end
212
+ FakePage.new(watir_browser).should_not have_expected_element
213
+ end
214
+ end
215
+
216
+ context "using default identifiers" do
217
+ class WatirDefaultIdentifier
218
+ include PageObject
219
+ text_field(:default_tf)
220
+ hidden_field(:default_hf)
221
+ text_area(:default_ta)
222
+ select_list(:default_sl)
223
+ link(:default_link)
224
+ checkbox(:default_cb)
225
+ radio_button(:default_rb)
226
+ button(:default_but)
227
+ div(:default_div)
228
+ span(:default_span)
229
+ table(:default_tab)
230
+ cell(:default_cell)
231
+ image(:default_im)
232
+ form(:default_form)
233
+ list_item(:default_li)
234
+ unordered_list(:default_ul)
235
+ ordered_list(:default_ol)
236
+ h1(:default_h1)
237
+ h2(:default_h2)
238
+ h3(:default_h3)
239
+ h4(:default_h4)
240
+ h5(:default_h5)
241
+ h6(:default_h6)
242
+ paragraph(:default_p)
243
+ file_field(:default_ff)
244
+ label(:default_lab)
245
+ element(:default_el, :audio)
246
+ end
247
+
248
+ let(:default_identifier) { WatirDefaultIdentifier.new(watir_browser) }
249
+
250
+ def mock_driver_for(tag)
251
+ watir_browser.should_receive(tag).with(:index => 0).and_return(watir_browser)
252
+ end
253
+
254
+ it "should work with a text_field" do
255
+ mock_driver_for :text_field
256
+ default_identifier.default_tf?
257
+ end
258
+
259
+ it "should work with a hidden field" do
260
+ mock_driver_for :hidden
261
+ default_identifier.default_hf?
262
+ end
263
+
264
+ it "should work with a text area" do
265
+ mock_driver_for :textarea
266
+ default_identifier.default_ta?
267
+ end
268
+
269
+ it "should work with a select list" do
270
+ mock_driver_for :select_list
271
+ default_identifier.default_sl?
272
+ end
273
+
274
+ it "should work with a link" do
275
+ mock_driver_for :link
276
+ default_identifier.default_link?
277
+ end
278
+
279
+ it "should work with a checkbox" do
280
+ mock_driver_for :checkbox
281
+ default_identifier.default_cb?
282
+ end
283
+
284
+ it "should work with a radio button" do
285
+ mock_driver_for :radio
286
+ default_identifier.default_rb?
287
+ end
288
+
289
+ it "should work with a button" do
290
+ mock_driver_for :button
291
+ default_identifier.default_but?
292
+ end
293
+
294
+ it "should work with a div" do
295
+ mock_driver_for :div
296
+ default_identifier.default_div?
297
+ end
298
+
299
+ it "should work with a span" do
300
+ mock_driver_for :span
301
+ default_identifier.default_span?
302
+ end
303
+
304
+ it "should work for a table" do
305
+ mock_driver_for :table
306
+ default_identifier.default_tab_element.should_not be_nil
307
+ end
308
+
309
+ it "should work for a cell" do
310
+ mock_driver_for :td
311
+ default_identifier.default_cell?
312
+ end
313
+
314
+ it "should work for an image" do
315
+ mock_driver_for :image
316
+ default_identifier.default_im?
317
+ end
318
+
319
+ it "should work for a form" do
320
+ mock_driver_for :form
321
+ default_identifier.default_form?
322
+ end
323
+
324
+ it "should work for a list item" do
325
+ mock_driver_for :li
326
+ default_identifier.default_li?
327
+ end
328
+
329
+ it "should work for unordered lists" do
330
+ mock_driver_for :ul
331
+ default_identifier.default_ul?
332
+ end
333
+
334
+ it "should work for ordered lists" do
335
+ mock_driver_for :ol
336
+ default_identifier.default_ol?
337
+ end
338
+
339
+ it "should work for h1" do
340
+ mock_driver_for :h1
341
+ default_identifier.default_h1?
342
+ end
343
+
344
+ it "should work for h2" do
345
+ mock_driver_for :h2
346
+ default_identifier.default_h2?
347
+ end
348
+
349
+ it "should work for h3" do
350
+ mock_driver_for :h3
351
+ default_identifier.default_h3?
352
+ end
353
+
354
+ it "should work for a h4" do
355
+ mock_driver_for :h4
356
+ default_identifier.default_h4?
357
+ end
358
+
359
+ it "should work for a h5" do
360
+ mock_driver_for :h5
361
+ default_identifier.default_h5?
362
+ end
363
+
364
+ it "should work for a h6" do
365
+ mock_driver_for :h6
366
+ default_identifier.default_h6?
367
+ end
368
+
369
+ it "should work with a paragraph" do
370
+ mock_driver_for :p
371
+ default_identifier.default_p?
372
+ end
373
+
374
+ it "should work with a file_field" do
375
+ mock_driver_for :file_field
376
+ default_identifier.default_ff?
377
+ end
378
+
379
+ it "should work with a label" do
380
+ mock_driver_for :label
381
+ default_identifier.default_lab?
382
+ end
383
+
384
+ it "should work with an element" do
385
+ mock_driver_for :audio
386
+ default_identifier.default_el?
387
+ end
388
+
389
+ end
390
+
391
+ context "link accessors" do
392
+ context "when called on a page object" do
393
+ it "should generate accessor methods" do
394
+ watir_page_object.should respond_to(:google_search)
395
+ watir_page_object.should respond_to(:google_search_element)
396
+ end
397
+
398
+ it "should call a block on the element method when present" do
399
+ block_page_object.continue_element.should == "link"
400
+ end
401
+ end
402
+
403
+ it "should select a link" do
404
+ watir_browser.stub_chain(:link, :click)
405
+ watir_page_object.google_search
406
+ end
407
+
408
+ it "should return a link element" do
409
+ watir_browser.should_receive(:link).and_return(watir_browser)
410
+ element = watir_page_object.google_search_element
411
+ element.should be_instance_of PageObject::Elements::Link
412
+ end
413
+ end
414
+
415
+
416
+ describe "text_field accessors" do
417
+ context "when called on a page object" do
418
+ it "should generate accessor methods" do
419
+ watir_page_object.should respond_to(:first_name)
420
+ watir_page_object.should respond_to(:first_name=)
421
+ watir_page_object.should respond_to(:first_name_element)
422
+ watir_page_object.should respond_to(:first_name?)
423
+ end
424
+
425
+ it "should call a block on the element method when present" do
426
+ block_page_object.first_name_element.should == "text_field"
427
+ end
428
+ end
429
+
430
+ it "should get the text from the text field element" do
431
+ watir_browser.should_receive(:text_field).and_return(watir_browser)
432
+ watir_browser.should_receive(:value).and_return('Kim')
433
+ watir_page_object.first_name.should == 'Kim'
434
+ end
435
+
436
+ it "should set some text on a text field element" do
437
+ watir_browser.should_receive(:text_field).and_return(watir_browser)
438
+ watir_browser.should_receive(:set).with('Kim')
439
+ watir_page_object.first_name = 'Kim'
440
+ end
441
+
442
+ it "should retrieve a text field element" do
443
+ watir_browser.should_receive(:text_field).and_return(watir_browser)
444
+ element = watir_page_object.first_name_element
445
+ element.should be_instance_of PageObject::Elements::TextField
446
+ end
447
+ end
448
+
449
+
450
+ describe "hidden field accessors" do
451
+ context "when called on a page object" do
452
+ it "should generate accessor methods" do
453
+ watir_page_object.should respond_to(:social_security_number)
454
+ watir_page_object.should respond_to(:social_security_number_element)
455
+ end
456
+
457
+ it "should call a block on the element method when present" do
458
+ block_page_object.secret_element.should == "hidden_field"
459
+ end
460
+ end
461
+
462
+ it "should get the text from a hidden field" do
463
+ watir_browser.should_receive(:hidden).and_return(watir_browser)
464
+ watir_browser.should_receive(:value).and_return("value")
465
+ watir_page_object.social_security_number.should == "value"
466
+ end
467
+
468
+ it "should retrieve a hidden field element" do
469
+ watir_browser.should_receive(:hidden).and_return(watir_browser)
470
+ element = watir_page_object.social_security_number_element
471
+ element.should be_instance_of(PageObject::Elements::HiddenField)
472
+ end
473
+ end
474
+
475
+ describe "text area accessors" do
476
+ context "when called on a page object" do
477
+ it "should generate accessor methods" do
478
+ watir_page_object.should respond_to(:address)
479
+ watir_page_object.should respond_to(:address=)
480
+ watir_page_object.should respond_to(:address_element)
481
+ end
482
+
483
+ it "should call a block on the element method when present" do
484
+ block_page_object.address_element.should == "text_area"
485
+ end
486
+ end
487
+
488
+ it "should set some text on the text area" do
489
+ watir_browser.should_receive(:textarea).and_return(watir_browser)
490
+ watir_browser.should_receive(:set).with("123 main street")
491
+ watir_page_object.address = "123 main street"
492
+ end
493
+
494
+ it "should get the text from the text area" do
495
+ watir_browser.should_receive(:textarea).and_return(watir_browser)
496
+ watir_browser.should_receive(:value).and_return("123 main street")
497
+ watir_page_object.address.should == "123 main street"
498
+ end
499
+
500
+ it "should retrieve a text area element" do
501
+ watir_browser.should_receive(:textarea).and_return(watir_browser)
502
+ element = watir_page_object.address_element
503
+ element.should be_instance_of PageObject::Elements::TextArea
504
+ end
505
+ end
506
+
507
+ describe "select_list accessors" do
508
+ context "when called on a page object" do
509
+ it "should generate accessor methods" do
510
+ watir_page_object.should respond_to :state
511
+ watir_page_object.should respond_to :state=
512
+ watir_page_object.should respond_to(:state_element)
513
+ end
514
+
515
+ it "should call a block on the element method when present" do
516
+ block_page_object.state_element.should == "select_list"
517
+ end
518
+ end
519
+
520
+ it "should get the current item from a select list" do
521
+ selected = "OH"
522
+ selected.should_receive(:selected?).and_return(selected)
523
+ selected.should_receive(:text).and_return("OH")
524
+ watir_browser.should_receive(:select_list).and_return watir_browser
525
+ watir_browser.should_receive(:options).and_return([selected])
526
+ watir_page_object.state.should == "OH"
527
+ end
528
+
529
+ it "should set the current item of a select list" do
530
+ watir_browser.should_receive(:select_list).and_return watir_browser
531
+ watir_browser.should_receive(:select).with("OH")
532
+ watir_page_object.state = "OH"
533
+ end
534
+
535
+ it "should retreive the select list element" do
536
+ watir_browser.should_receive(:select_list).and_return(watir_browser)
537
+ element = watir_page_object.state_element
538
+ element.should be_instance_of PageObject::Elements::SelectList
539
+ end
540
+
541
+ it "should return list of selection options" do
542
+ option1 = double('option')
543
+ option2 = double('option')
544
+ option1.should_receive(:text).and_return("CA")
545
+ option2.should_receive(:text).and_return("OH")
546
+
547
+ select_element = double("select")
548
+ select_element.should_receive(:options).twice.and_return([option1, option2])
549
+ watir_page_object.should_receive(:state_element).and_return(select_element)
550
+
551
+ watir_page_object.state_options.should == ["CA","OH"]
552
+ end
553
+
554
+
555
+ end
556
+
557
+
558
+ describe "check_box accessors" do
559
+ context "when called on a page object" do
560
+ it "should generate accessor methods" do
561
+ watir_page_object.should respond_to :check_active
562
+ watir_page_object.should respond_to :uncheck_active
563
+ watir_page_object.should respond_to :active_checked?
564
+ watir_page_object.should respond_to :active_element
565
+ end
566
+
567
+ it "should call a block on the element method when present" do
568
+ block_page_object.active_element.should == "checkbox"
569
+ end
570
+ end
571
+
572
+ it "should check a check box element" do
573
+ watir_browser.should_receive(:checkbox).and_return(watir_browser)
574
+ watir_browser.should_receive(:set)
575
+ watir_page_object.check_active
576
+ end
577
+
578
+ it "should clear a check box element" do
579
+ watir_browser.should_receive(:checkbox).and_return(watir_browser)
580
+ watir_browser.should_receive(:clear)
581
+ watir_page_object.uncheck_active
582
+ end
583
+
584
+ it "should know if a check box element is selected" do
585
+ watir_browser.should_receive(:checkbox).and_return(watir_browser)
586
+ watir_browser.should_receive(:set?).and_return(true)
587
+ watir_page_object.active_checked?.should be true
588
+ end
589
+
590
+ it "should retrieve a checkbox element" do
591
+ watir_browser.should_receive(:checkbox).and_return(watir_browser)
592
+ element = watir_page_object.active_element
593
+ element.should be_instance_of PageObject::Elements::CheckBox
594
+ end
595
+ end
596
+
597
+
598
+ describe "radio accessors" do
599
+ context "when called on a page object" do
600
+ it "should generate accessor methods" do
601
+ watir_page_object.should respond_to :select_first
602
+ watir_page_object.should respond_to :first_selected?
603
+ watir_page_object.should respond_to(:first_element)
604
+ end
605
+
606
+ it "should call a block on the element method when present" do
607
+ block_page_object.first_element.should == "radio_button"
608
+ end
609
+ end
610
+
611
+ it "should select a radio button" do
612
+ watir_browser.should_receive(:radio).and_return(watir_browser)
613
+ watir_browser.should_receive(:set)
614
+ watir_page_object.select_first
615
+ end
616
+
617
+ it "should determine if a radio is selected" do
618
+ watir_browser.should_receive(:radio).and_return(watir_browser)
619
+ watir_browser.should_receive(:set?)
620
+ watir_page_object.first_selected?
621
+ end
622
+
623
+ it "should retrieve a radio button element" do
624
+ watir_browser.should_receive(:radio).and_return(watir_browser)
625
+ element = watir_page_object.first_element
626
+ element.should be_instance_of PageObject::Elements::RadioButton
627
+ end
628
+ end
629
+
630
+ describe "button accessors" do
631
+ context "when called on a page object" do
632
+ it "should generate accessor methods" do
633
+ watir_page_object.should respond_to :click_me
634
+ watir_page_object.should respond_to :click_me_element
635
+ end
636
+
637
+ it "should call a block on the element method when present" do
638
+ block_page_object.click_me_element.should == "button"
639
+ end
640
+ end
641
+
642
+ it "should be able to click a button" do
643
+ watir_browser.should_receive(:button).and_return(watir_browser)
644
+ watir_browser.should_receive(:click)
645
+ watir_page_object.click_me
646
+ end
647
+
648
+ it "should retrieve a button element" do
649
+ watir_browser.should_receive(:button).and_return(watir_browser)
650
+ element = watir_page_object.click_me_element
651
+ element.should be_instance_of PageObject::Elements::Button
652
+ end
653
+ end
654
+
655
+ describe "div accessors" do
656
+ context "when called on a page object" do
657
+ it "should generate accessor methods" do
658
+ watir_page_object.should respond_to(:message)
659
+ watir_page_object.should respond_to(:message_element)
660
+ end
661
+
662
+ it "should call a block on the element method when present" do
663
+ block_page_object.footer_element.should == "div"
664
+ end
665
+ end
666
+
667
+ it "should retrieve the text from a div" do
668
+ watir_browser.should_receive(:div).and_return(watir_browser)
669
+ watir_browser.should_receive(:text).and_return("Message from div")
670
+ watir_page_object.message.should == "Message from div"
671
+ end
672
+
673
+ it "should retrieve the div element from the page" do
674
+ watir_browser.should_receive(:div).and_return(watir_browser)
675
+ element = watir_page_object.message_element
676
+ element.should be_instance_of PageObject::Elements::Div
677
+ end
678
+ end
679
+
680
+ describe "span accessors" do
681
+ context "when called on a page object" do
682
+ it "should generate accessor methods" do
683
+ watir_page_object.should respond_to(:alert_span)
684
+ watir_page_object.should respond_to(:alert_span_element)
685
+ end
686
+
687
+ it "should call a block on the element method when present" do
688
+ block_page_object.alert_span_element.should == "span"
689
+ end
690
+ end
691
+
692
+ it "should retrieve the text from a span" do
693
+ watir_browser.should_receive(:span).and_return(watir_browser)
694
+ watir_browser.should_receive(:text).and_return("Alert")
695
+ watir_page_object.alert_span.should == "Alert"
696
+ end
697
+
698
+ it "should retrieve the span element from the page" do
699
+ watir_browser.should_receive(:span).and_return(watir_browser)
700
+ element = watir_page_object.alert_span_element
701
+ element.should be_instance_of PageObject::Elements::Span
702
+ end
703
+ end
704
+
705
+ describe "table accessors" do
706
+ context "when called on a page object" do
707
+ it "should generate accessor methods" do
708
+ watir_page_object.should respond_to(:cart)
709
+ watir_page_object.should respond_to(:cart_element)
710
+ end
711
+
712
+ it "should call a block on the element method when present" do
713
+ block_page_object.cart_element.should == "table"
714
+ end
715
+ end
716
+
717
+ it "should retrieve the table element from the page" do
718
+ watir_browser.should_receive(:table).and_return(watir_browser)
719
+ element = watir_page_object.cart_element
720
+ element.should be_instance_of PageObject::Elements::Table
721
+ end
722
+ end
723
+
724
+ describe "table cell accessors" do
725
+ context "when called on a page object" do
726
+ it "should generate accessor methods" do
727
+ watir_page_object.should respond_to(:total)
728
+ watir_page_object.should respond_to(:total_element)
729
+ end
730
+
731
+ it "should call a block on the element method when present" do
732
+ block_page_object.total_element.should == "cell"
733
+ end
734
+ end
735
+
736
+ it "should retrieve the text for the cell" do
737
+ watir_browser.should_receive(:td).and_return(watir_browser)
738
+ watir_browser.should_receive(:text).and_return('10.00')
739
+ watir_page_object.total.should == '10.00'
740
+ end
741
+
742
+ it "should retrieve the cell element from the page" do
743
+ watir_browser.should_receive(:td).and_return(watir_browser)
744
+ element = watir_page_object.total_element
745
+ element.should be_instance_of PageObject::Elements::TableCell
746
+ end
747
+ end
748
+
749
+ describe "image accessors" do
750
+ context "when called on a page object" do
751
+ it "should generate accessor methods" do
752
+ watir_page_object.should respond_to(:logo_element)
753
+ end
754
+
755
+ it "should call a block on the element method when present" do
756
+ block_page_object.logo_element.should == "image"
757
+ end
758
+ end
759
+
760
+ it "should retrieve the image element from the page" do
761
+ watir_browser.should_receive(:image).and_return(watir_browser)
762
+ element = watir_page_object.logo_element
763
+ element.should be_instance_of PageObject::Elements::Image
764
+ end
765
+ end
766
+
767
+ describe "form accessors" do
768
+ context "when called on a page object" do
769
+ it "should generate accessor methods" do
770
+ watir_page_object.should respond_to(:login_element)
771
+ end
772
+
773
+ it "should call a block on the element method when present" do
774
+ block_page_object.login_element.should == "form"
775
+ end
776
+ end
777
+
778
+ it "should retrieve the form element from the page" do
779
+ watir_browser.should_receive(:form).and_return(watir_browser)
780
+ element = watir_page_object.login_element
781
+ element.should be_instance_of PageObject::Elements::Form
782
+ end
783
+ end
784
+
785
+ describe "list item accessors" do
786
+ context "when called on a page object" do
787
+ it "should generate accessor methods" do
788
+ watir_page_object.should respond_to(:item_one)
789
+ watir_page_object.should respond_to(:item_one_element)
790
+ end
791
+
792
+ it "should call a block on the element method when present" do
793
+ block_page_object.item_one_element.should == "list_item"
794
+ end
795
+ end
796
+
797
+ it "should retrieve the text from the list item" do
798
+ watir_browser.should_receive(:li).and_return(watir_browser)
799
+ watir_browser.should_receive(:text).and_return("value")
800
+ watir_page_object.item_one.should == "value"
801
+ end
802
+
803
+ it "should retrieve the list item element from the page" do
804
+ watir_browser.should_receive(:li).and_return(watir_browser)
805
+ element = watir_page_object.item_one_element
806
+ element.should be_instance_of PageObject::Elements::ListItem
807
+ end
808
+ end
809
+
810
+ describe "unordered list accessors" do
811
+ context "when called on a page object" do
812
+ it "should generate accessor methods" do
813
+ watir_page_object.should respond_to(:menu_element)
814
+ end
815
+
816
+ it "should call a block on the element method when present" do
817
+ block_page_object.menu_element.should == "unordered_list"
818
+ end
819
+ end
820
+
821
+ it "should retrieve the element from the page" do
822
+ watir_browser.should_receive(:ul).and_return(watir_browser)
823
+ element = watir_page_object.menu_element
824
+ element.should be_instance_of PageObject::Elements::UnorderedList
825
+ end
826
+ end
827
+
828
+ describe "ordered list accessors" do
829
+ context "when called on a page object" do
830
+ it "should generate accessor methods" do
831
+ watir_page_object.should respond_to(:top_five_element)
832
+ end
833
+
834
+ it "should call a block on the element method when present" do
835
+ block_page_object.top_five_element.should == "ordered_list"
836
+ end
837
+ end
838
+
839
+ it "should retrieve the element from the page" do
840
+ watir_browser.should_receive(:ol).and_return(watir_browser)
841
+ element = watir_page_object.top_five_element
842
+ element.should be_instance_of PageObject::Elements::OrderedList
843
+ end
844
+ end
845
+
846
+ describe "h1 accessors" do
847
+ context "when called on a page object" do
848
+ it "should generate accessor methods" do
849
+ watir_page_object.should respond_to(:heading1)
850
+ watir_page_object.should respond_to(:heading1_element)
851
+ end
852
+
853
+ it "should call a block on the element method when present" do
854
+ block_page_object.heading1_element.should == "h1"
855
+ end
856
+ end
857
+
858
+ it "should retrieve the text from the h1" do
859
+ watir_browser.should_receive(:h1).and_return(watir_browser)
860
+ watir_browser.should_receive(:text).and_return("value")
861
+ watir_page_object.heading1.should == "value"
862
+ end
863
+
864
+ it "should retrieve the element from the page" do
865
+ watir_browser.should_receive(:h1).and_return(watir_browser)
866
+ element = watir_page_object.heading1_element
867
+ element.should be_instance_of PageObject::Elements::Heading
868
+ end
869
+ end
870
+
871
+ describe "h2 accessors" do
872
+ context "when called on a page object" do
873
+ it "should generate accessor methods" do
874
+ watir_page_object.should respond_to(:heading2)
875
+ watir_page_object.should respond_to(:heading2_element)
876
+ end
877
+
878
+ it "should call a block on the element method when present" do
879
+ block_page_object.heading2_element.should == "h2"
880
+ end
881
+ end
882
+
883
+ it "should retrieve the text from the h2" do
884
+ watir_browser.should_receive(:h2).and_return(watir_browser)
885
+ watir_browser.should_receive(:text).and_return("value")
886
+ watir_page_object.heading2.should == "value"
887
+ end
888
+
889
+ it "should retrieve the element from the page" do
890
+ watir_browser.should_receive(:h2).and_return(watir_browser)
891
+ element = watir_page_object.heading2_element
892
+ element.should be_instance_of PageObject::Elements::Heading
893
+ end
894
+ end
895
+
896
+ describe "h3 accessors" do
897
+ context "when called on a page object" do
898
+ it "should generate accessor methods" do
899
+ watir_page_object.should respond_to(:heading3)
900
+ watir_page_object.should respond_to(:heading3_element)
901
+ end
902
+
903
+ it "should call a block on the element method when present" do
904
+ block_page_object.heading3_element.should == "h3"
905
+ end
906
+ end
907
+
908
+ it "should retrieve the text from the h3" do
909
+ watir_browser.should_receive(:h3).and_return(watir_browser)
910
+ watir_browser.should_receive(:text).and_return("value")
911
+ watir_page_object.heading3.should == "value"
912
+ end
913
+
914
+ it "should retrieve the element from the page" do
915
+ watir_browser.should_receive(:h3).and_return(watir_browser)
916
+ element = watir_page_object.heading3_element
917
+ element.should be_instance_of PageObject::Elements::Heading
918
+ end
919
+ end
920
+
921
+ describe "h4 accessors" do
922
+ context "when called on a page object" do
923
+ it "should generate accessor methods" do
924
+ watir_page_object.should respond_to(:heading4)
925
+ watir_page_object.should respond_to(:heading4_element)
926
+ end
927
+
928
+ it "should call a block on the element method when present" do
929
+ block_page_object.heading4_element.should == "h4"
930
+ end
931
+ end
932
+
933
+ it "should retrieve the text from the h4" do
934
+ watir_browser.should_receive(:h4).and_return(watir_browser)
935
+ watir_browser.should_receive(:text).and_return("value")
936
+ watir_page_object.heading4.should == "value"
937
+ end
938
+
939
+ it "should retrieve the element from the page" do
940
+ watir_browser.should_receive(:h4).and_return(watir_browser)
941
+ element = watir_page_object.heading4_element
942
+ element.should be_instance_of PageObject::Elements::Heading
943
+ end
944
+ end
945
+
946
+ describe "h5 accessors" do
947
+ context "when called on a page object" do
948
+ it "should generate accessor methods" do
949
+ watir_page_object.should respond_to(:heading5)
950
+ watir_page_object.should respond_to(:heading5_element)
951
+ end
952
+
953
+ it "should call a block on the element method when present" do
954
+ block_page_object.heading5_element.should == "h5"
955
+ end
956
+ end
957
+
958
+ it "should retrieve the text from the h5" do
959
+ watir_browser.should_receive(:h5).and_return(watir_browser)
960
+ watir_browser.should_receive(:text).and_return("value")
961
+ watir_page_object.heading5.should == "value"
962
+ end
963
+
964
+ it "should retrieve the element from the page" do
965
+ watir_browser.should_receive(:h5).and_return(watir_browser)
966
+ element = watir_page_object.heading5_element
967
+ element.should be_instance_of PageObject::Elements::Heading
968
+ end
969
+ end
970
+
971
+ describe "h6 accessors" do
972
+ context "when called on a page object" do
973
+ it "should generate accessor methods" do
974
+ watir_page_object.should respond_to(:heading6)
975
+ watir_page_object.should respond_to(:heading6_element)
976
+ end
977
+
978
+ it "should call a block on the element method when present" do
979
+ block_page_object.heading6_element.should == "h6"
980
+ end
981
+ end
982
+
983
+ it "should retrieve the text from the h6" do
984
+ watir_browser.should_receive(:h6).and_return(watir_browser)
985
+ watir_browser.should_receive(:text).and_return("value")
986
+ watir_page_object.heading6.should == "value"
987
+ end
988
+
989
+ it "should retrieve the element from the page" do
990
+ watir_browser.should_receive(:h6).and_return(watir_browser)
991
+ element = watir_page_object.heading6_element
992
+ element.should be_instance_of PageObject::Elements::Heading
993
+ end
994
+ end
995
+
996
+
997
+ describe "p accessors" do
998
+ context "when called on a page object" do
999
+ it "should generate accessor methods" do
1000
+ watir_page_object.should respond_to(:first_para)
1001
+ watir_page_object.should respond_to(:first_para_element)
1002
+ end
1003
+
1004
+ it "should call a block on the element method when present" do
1005
+ block_page_object.first_para_element.should == "p"
1006
+ end
1007
+ end
1008
+
1009
+ it "should retrieve the text from the p" do
1010
+ watir_browser.should_receive(:p).and_return(watir_browser)
1011
+ watir_browser.should_receive(:text).and_return("value")
1012
+ watir_page_object.first_para.should == "value"
1013
+ end
1014
+
1015
+ it "should retrieve the element from the page" do
1016
+ watir_browser.should_receive(:p).and_return(watir_browser)
1017
+ element = watir_page_object.first_para_element
1018
+ element.should be_instance_of PageObject::Elements::Paragraph
1019
+ end
1020
+ end
1021
+
1022
+ describe "file_field accessors" do
1023
+ context "when called on a page object" do
1024
+ it "should generate accessor methods" do
1025
+ watir_page_object.should respond_to(:upload_me=)
1026
+ watir_page_object.should respond_to(:upload_me_element)
1027
+ end
1028
+
1029
+ it "should call a block on the element method when present" do
1030
+ block_page_object.a_file_element.should == "file_field"
1031
+ end
1032
+ end
1033
+
1034
+ it "should set the file name" do
1035
+ watir_browser.should_receive(:file_field).and_return(watir_browser)
1036
+ watir_browser.should_receive(:set).with('some_file')
1037
+ watir_page_object.upload_me = 'some_file'
1038
+ end
1039
+
1040
+ it "should retrieve a text field element" do
1041
+ watir_browser.should_receive(:file_field).and_return(watir_browser)
1042
+ element = watir_page_object.upload_me_element
1043
+ element.should be_instance_of PageObject::Elements::FileField
1044
+ end
1045
+ end
1046
+
1047
+ describe "area accessors" do
1048
+ context "when called on a page object" do
1049
+ it "should generate accessor methods" do
1050
+ watir_page_object.should respond_to(:img_area)
1051
+ watir_page_object.should respond_to(:img_area_element)
1052
+ end
1053
+
1054
+ it "should call a block on the element method when present" do
1055
+ block_page_object.img_area_element.should == "area"
1056
+ end
1057
+ end
1058
+
1059
+ it "should click on the area" do
1060
+ watir_browser.should_receive(:area).and_return(watir_browser)
1061
+ watir_browser.should_receive(:click)
1062
+ watir_page_object.img_area
1063
+ end
1064
+
1065
+ it "should retrieve the element from the page" do
1066
+ watir_browser.should_receive(:area).and_return(watir_browser)
1067
+ element = watir_page_object.img_area_element
1068
+ element.should be_instance_of PageObject::Elements::Area
1069
+ end
1070
+ end
1071
+
1072
+ describe "canvas accessors" do
1073
+ context "when called on a page object" do
1074
+ it "should generate accessor methods" do
1075
+ watir_page_object.should respond_to(:my_canvas_element)
1076
+ end
1077
+
1078
+ it "should call a block on the element method when present" do
1079
+ block_page_object.my_canvas_element.should == "canvas"
1080
+ end
1081
+ end
1082
+ end
1083
+
1084
+ describe "audio accessors" do
1085
+ context "when called on a page object" do
1086
+ it "should generate accessor methods" do
1087
+ watir_page_object.should respond_to(:acdc_element)
1088
+ end
1089
+
1090
+ it "should call a block on the element method when present" do
1091
+ block_page_object.acdc_element.should == "audio"
1092
+ end
1093
+ end
1094
+ end
1095
+
1096
+ describe "video accessors" do
1097
+ context "when called on a page object" do
1098
+ it "should generate accessor methods" do
1099
+ watir_page_object.should respond_to(:movie_element)
1100
+ end
1101
+
1102
+ it "should call a block on the element method when present" do
1103
+ block_page_object.movie_element.should == "video"
1104
+ end
1105
+ end
1106
+ end
1107
+ end