meeane-page-object 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (253) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -7
  3. data/.rspec +2 -2
  4. data/.ruby-gemset +1 -1
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +10 -10
  7. data/ChangeLog +790 -790
  8. data/Gemfile +13 -13
  9. data/Guardfile +20 -20
  10. data/LICENSE +20 -20
  11. data/README.md +1 -1
  12. data/Rakefile +35 -35
  13. data/cucumber.yml +10 -10
  14. data/features/area.feature +35 -35
  15. data/features/async.feature +30 -30
  16. data/features/audio.feature +68 -68
  17. data/features/button.feature +88 -87
  18. data/features/canvas.feature +37 -37
  19. data/features/check_box.feature +55 -55
  20. data/features/div.feature +45 -45
  21. data/features/element.feature +322 -322
  22. data/features/file_field.feature +40 -40
  23. data/features/form.feature +43 -43
  24. data/features/frames.feature +75 -75
  25. data/features/generic_elements.feature +29 -29
  26. data/features/gxt_table_extension.feature +24 -24
  27. data/features/headings.feature +97 -97
  28. data/features/hidden_field.feature +45 -45
  29. data/features/html/async.html +36 -36
  30. data/features/html/double_click.html +12 -12
  31. data/features/html/failure.html +7 -7
  32. data/features/html/frame_1.html +17 -17
  33. data/features/html/frame_2.html +15 -15
  34. data/features/html/frame_3.html +14 -14
  35. data/features/html/frames.html +12 -12
  36. data/features/html/hover.html +11 -11
  37. data/features/html/iframes.html +12 -12
  38. data/features/html/indexed_property.html +51 -51
  39. data/features/html/modal.html +17 -17
  40. data/features/html/modal_1.html +37 -37
  41. data/features/html/modal_2.html +26 -26
  42. data/features/html/multi_elements.html +144 -144
  43. data/features/html/nested_elements.html +77 -77
  44. data/features/html/nested_frame_2.html +11 -11
  45. data/features/html/nested_frame_3.html +14 -14
  46. data/features/html/nested_frames.html +10 -10
  47. data/features/html/static_elements.html +233 -226
  48. data/features/html/success.html +7 -7
  49. data/features/html/sun.html +7 -7
  50. data/features/image.feature +50 -50
  51. data/features/indexed_property.feature +97 -97
  52. data/features/javascript.feature +27 -27
  53. data/features/label.feature +46 -46
  54. data/features/link.feature +52 -52
  55. data/features/list_item.feature +36 -36
  56. data/features/modal_dialog.feature +15 -15
  57. data/features/multi_elements.feature +486 -486
  58. data/features/nested_elements.feature +117 -117
  59. data/features/ordered_list.feature +56 -56
  60. data/features/page_level_actions.feature +90 -90
  61. data/features/paragraph.feature +35 -35
  62. data/features/radio_button.feature +58 -58
  63. data/features/radio_button_collinson.feature +12 -58
  64. data/features/radio_button_group.feature +29 -29
  65. data/features/sample-app/public/jquery-1.3.2.js +4376 -4376
  66. data/features/sample-app/public/jquery.html +30 -30
  67. data/features/sample-app/public/prototype-1.6.0.3.js +4319 -4319
  68. data/features/sample-app/public/prototype.html +35 -35
  69. data/features/sample-app/sample_app.rb +35 -35
  70. data/features/select_list.feature +86 -86
  71. data/features/span.feature +37 -37
  72. data/features/step_definitions/accessor_steps.rb +60 -60
  73. data/features/step_definitions/area_steps.rb +19 -19
  74. data/features/step_definitions/async_steps.rb +83 -83
  75. data/features/step_definitions/audio_steps.rb +27 -27
  76. data/features/step_definitions/button_steps.rb +43 -43
  77. data/features/step_definitions/canvas_steps.rb +15 -15
  78. data/features/step_definitions/check_box_steps.rb +35 -35
  79. data/features/step_definitions/div_steps.rb +19 -19
  80. data/features/step_definitions/element_steps.rb +266 -266
  81. data/features/step_definitions/file_field_steps.rb +19 -19
  82. data/features/step_definitions/form_steps.rb +18 -18
  83. data/features/step_definitions/frames_steps.rb +159 -159
  84. data/features/step_definitions/generic_element_steps.rb +31 -31
  85. data/features/step_definitions/gxt_table_steps.rb +58 -58
  86. data/features/step_definitions/headings_steps.rb +12 -12
  87. data/features/step_definitions/hidden_field_steps.rb +26 -26
  88. data/features/step_definitions/image_steps.rb +27 -27
  89. data/features/step_definitions/indexed_property_steps.rb +128 -128
  90. data/features/step_definitions/javascript_steps.rb +52 -52
  91. data/features/step_definitions/label_steps.rb +19 -19
  92. data/features/step_definitions/link_steps.rb +40 -40
  93. data/features/step_definitions/list_item_steps.rb +19 -19
  94. data/features/step_definitions/modal_dialog_steps.rb +62 -62
  95. data/features/step_definitions/multi_elements_steps.rb +528 -528
  96. data/features/step_definitions/nested_elements_steps.rb +212 -212
  97. data/features/step_definitions/ordered_list_steps.rb +23 -23
  98. data/features/step_definitions/page_level_actions_steps.rb +135 -135
  99. data/features/step_definitions/page_traversal_steps.rb +4 -4
  100. data/features/step_definitions/paragraph_steps.rb +28 -28
  101. data/features/step_definitions/radio_button_collinson_steps.rb +2 -46
  102. data/features/step_definitions/radio_button_group_steps.rb +35 -35
  103. data/features/step_definitions/radio_button_steps.rb +26 -46
  104. data/features/step_definitions/select_list_steps.rb +65 -65
  105. data/features/step_definitions/span_steps.rb +19 -19
  106. data/features/step_definitions/table_cell_steps.rb +14 -14
  107. data/features/step_definitions/table_steps.rb +66 -66
  108. data/features/step_definitions/text_area_steps.rb +34 -34
  109. data/features/step_definitions/text_field_steps.rb +35 -35
  110. data/features/step_definitions/unordered_list_steps.rb +23 -23
  111. data/features/step_definitions/video_steps.rb +45 -45
  112. data/features/support/ajax_text_environment.rb +26 -26
  113. data/features/support/env.rb +8 -8
  114. data/features/support/hooks.rb +8 -8
  115. data/features/support/page.rb +370 -364
  116. data/features/support/persistent_browser.rb +70 -70
  117. data/features/support/targets/firefox14_osx.rb +6 -6
  118. data/features/support/targets/firefox14_windows7.rb +6 -6
  119. data/features/support/url_helper.rb +57 -57
  120. data/features/table.feature +114 -114
  121. data/features/table_cell.feature +45 -45
  122. data/features/text_area.feature +51 -51
  123. data/features/text_field.feature +70 -70
  124. data/features/unordered_list.feature +56 -56
  125. data/features/video.feature +73 -73
  126. data/lib/page-object.rb +408 -408
  127. data/lib/page-object/accessors.rb +1313 -1313
  128. data/lib/page-object/core_ext/string.rb +4 -4
  129. data/lib/page-object/element_locators.rb +21 -21
  130. data/lib/page-object/elements.rb +59 -59
  131. data/lib/page-object/elements/area.rb +31 -31
  132. data/lib/page-object/elements/audio.rb +9 -9
  133. data/lib/page-object/elements/button.rb +35 -35
  134. data/lib/page-object/elements/canvas.rb +23 -23
  135. data/lib/page-object/elements/check_box.rb +37 -37
  136. data/lib/page-object/elements/div.rb +19 -19
  137. data/lib/page-object/elements/element.rb +226 -226
  138. data/lib/page-object/elements/file_field.rb +38 -38
  139. data/lib/page-object/elements/form.rb +36 -36
  140. data/lib/page-object/elements/heading.rb +15 -15
  141. data/lib/page-object/elements/hidden_field.rb +22 -22
  142. data/lib/page-object/elements/image.rb +36 -36
  143. data/lib/page-object/elements/label.rb +36 -36
  144. data/lib/page-object/elements/link.rb +46 -46
  145. data/lib/page-object/elements/list_item.rb +19 -19
  146. data/lib/page-object/elements/media.rb +45 -45
  147. data/lib/page-object/elements/option.rb +10 -10
  148. data/lib/page-object/elements/ordered_list.rb +50 -50
  149. data/lib/page-object/elements/paragraph.rb +9 -9
  150. data/lib/page-object/elements/radio_button.rb +37 -37
  151. data/lib/page-object/elements/select_list.rb +42 -42
  152. data/lib/page-object/elements/span.rb +19 -19
  153. data/lib/page-object/elements/table.rb +68 -68
  154. data/lib/page-object/elements/table_cell.rb +28 -28
  155. data/lib/page-object/elements/table_row.rb +50 -50
  156. data/lib/page-object/elements/text_area.rb +38 -38
  157. data/lib/page-object/elements/text_field.rb +42 -42
  158. data/lib/page-object/elements/unordered_list.rb +51 -51
  159. data/lib/page-object/elements/video.rb +18 -18
  160. data/lib/page-object/indexed_properties.rb +36 -36
  161. data/lib/page-object/javascript/jquery.rb +14 -14
  162. data/lib/page-object/javascript/prototype.rb +14 -14
  163. data/lib/page-object/javascript/yui.rb +18 -18
  164. data/lib/page-object/javascript_framework_facade.rb +78 -78
  165. data/lib/page-object/loads_platform.rb +26 -26
  166. data/lib/page-object/locator_generator.rb +129 -129
  167. data/lib/page-object/nested_elements.rb +17 -17
  168. data/lib/page-object/page_factory.rb +108 -108
  169. data/lib/page-object/page_populator.rb +92 -92
  170. data/lib/page-object/platforms.rb +18 -18
  171. data/lib/page-object/platforms/selenium_webdriver.rb +17 -17
  172. data/lib/page-object/platforms/selenium_webdriver/button.rb +14 -14
  173. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -29
  174. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -291
  175. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -16
  176. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -16
  177. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -28
  178. data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -18
  179. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -23
  180. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -39
  181. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -1136
  182. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -22
  183. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -93
  184. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -42
  185. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -42
  186. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -43
  187. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -17
  188. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -17
  189. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -39
  190. data/lib/page-object/platforms/watir_webdriver.rb +18 -18
  191. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -29
  192. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -249
  193. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -16
  194. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -16
  195. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -22
  196. data/lib/page-object/platforms/watir_webdriver/label.rb +17 -18
  197. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -15
  198. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -35
  199. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -1029
  200. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -22
  201. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -74
  202. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -38
  203. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -37
  204. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -23
  205. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -16
  206. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -36
  207. data/lib/page-object/version.rb +4 -4
  208. data/lib/page-object/widgets.rb +133 -133
  209. data/meeane-page-object.gemspec +32 -32
  210. data/spec/page-object/element_locators_spec.rb +1065 -1065
  211. data/spec/page-object/elements/area_spec.rb +45 -45
  212. data/spec/page-object/elements/button_spec.rb +50 -50
  213. data/spec/page-object/elements/canvas_spec.rb +40 -40
  214. data/spec/page-object/elements/check_box_spec.rb +49 -49
  215. data/spec/page-object/elements/div_spec.rb +28 -28
  216. data/spec/page-object/elements/element_spec.rb +114 -114
  217. data/spec/page-object/elements/file_field_spec.rb +39 -39
  218. data/spec/page-object/elements/form_spec.rb +28 -28
  219. data/spec/page-object/elements/heading_spec.rb +48 -48
  220. data/spec/page-object/elements/hidden_field_spec.rb +28 -28
  221. data/spec/page-object/elements/image_spec.rb +66 -66
  222. data/spec/page-object/elements/label_spec.rb +29 -29
  223. data/spec/page-object/elements/link_spec.rb +49 -49
  224. data/spec/page-object/elements/list_item_spec.rb +28 -28
  225. data/spec/page-object/elements/nested_element_spec.rb +254 -254
  226. data/spec/page-object/elements/option_spec.rb +11 -11
  227. data/spec/page-object/elements/ordered_list_spec.rb +94 -94
  228. data/spec/page-object/elements/paragraph_spec.rb +28 -28
  229. data/spec/page-object/elements/select_list_spec.rb +142 -142
  230. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -44
  231. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -49
  232. data/spec/page-object/elements/selenium_element_spec.rb +172 -172
  233. data/spec/page-object/elements/span_spec.rb +26 -26
  234. data/spec/page-object/elements/table_cell_spec.rb +21 -21
  235. data/spec/page-object/elements/table_row_spec.rb +70 -70
  236. data/spec/page-object/elements/table_spec.rb +98 -98
  237. data/spec/page-object/elements/text_area_spec.rb +39 -39
  238. data/spec/page-object/elements/unordered_list_spec.rb +95 -95
  239. data/spec/page-object/elements/watir_element_spec.rb +142 -142
  240. data/spec/page-object/javascript_framework_facade_spec.rb +61 -61
  241. data/spec/page-object/loads_platform_spec.rb +53 -53
  242. data/spec/page-object/page-object_spec.rb +405 -405
  243. data/spec/page-object/page_factory_spec.rb +256 -256
  244. data/spec/page-object/page_populator_spec.rb +122 -122
  245. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -68
  246. data/spec/page-object/platforms/selenium_webdriver_spec.rb +28 -28
  247. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -29
  248. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -9
  249. data/spec/page-object/selenium_accessors_spec.rb +589 -589
  250. data/spec/page-object/watir_accessors_spec.rb +1107 -1107
  251. data/spec/page-object/widget_spec.rb +226 -226
  252. data/spec/spec_helper.rb +44 -44
  253. metadata +193 -43
@@ -1,1107 +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
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