watir-webdriver 0.0.1.dev6 → 0.0.1.dev7

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 (94) hide show
  1. data/Rakefile +1 -2
  2. data/VERSION +1 -1
  3. data/lib/watir-webdriver.rb +1 -4
  4. data/lib/watir-webdriver/base_element.rb +14 -7
  5. data/lib/watir-webdriver/browser.rb +3 -1
  6. data/lib/watir-webdriver/elements/button.rb +1 -0
  7. data/lib/watir-webdriver/elements/form.rb +1 -1
  8. data/lib/watir-webdriver/elements/frame.rb +77 -0
  9. data/lib/watir-webdriver/elements/generated.rb +536 -536
  10. data/lib/watir-webdriver/elements/option.rb +3 -0
  11. data/lib/watir-webdriver/elements/table_row.rb +1 -0
  12. data/lib/watir-webdriver/elements/text_field.rb +5 -1
  13. data/lib/watir-webdriver/xpath_support.rb +0 -1
  14. data/spec/base_element_spec.rb +16 -0
  15. data/spec/html/keylogger.html +15 -0
  16. data/spec/watirspec/area_spec.rb +78 -0
  17. data/spec/watirspec/areas_spec.rb +31 -0
  18. data/spec/watirspec/browser_spec.rb +274 -0
  19. data/spec/watirspec/button_spec.rb +242 -0
  20. data/spec/watirspec/buttons_spec.rb +48 -0
  21. data/spec/watirspec/checkbox_spec.rb +272 -0
  22. data/spec/watirspec/checkboxes_spec.rb +32 -0
  23. data/spec/watirspec/dd_spec.rb +123 -0
  24. data/spec/watirspec/dds_spec.rb +31 -0
  25. data/spec/watirspec/div_spec.rb +211 -0
  26. data/spec/watirspec/divs_spec.rb +31 -0
  27. data/spec/watirspec/dl_spec.rb +123 -0
  28. data/spec/watirspec/dls_spec.rb +32 -0
  29. data/spec/watirspec/dt_spec.rb +123 -0
  30. data/spec/watirspec/dts_spec.rb +31 -0
  31. data/spec/watirspec/element_spec.rb +89 -0
  32. data/spec/watirspec/em_spec.rb +97 -0
  33. data/spec/watirspec/ems_spec.rb +32 -0
  34. data/spec/watirspec/filefield_spec.rb +119 -0
  35. data/spec/watirspec/filefields_spec.rb +32 -0
  36. data/spec/watirspec/font_spec.rb +26 -0
  37. data/spec/watirspec/form_spec.rb +63 -0
  38. data/spec/watirspec/forms_spec.rb +33 -0
  39. data/spec/watirspec/frame_spec.rb +135 -0
  40. data/spec/watirspec/frames_spec.rb +62 -0
  41. data/spec/watirspec/hidden_spec.rb +102 -0
  42. data/spec/watirspec/hiddens_spec.rb +32 -0
  43. data/spec/watirspec/hn_spec.rb +93 -0
  44. data/spec/watirspec/hns_spec.rb +38 -0
  45. data/spec/watirspec/image_spec.rb +207 -0
  46. data/spec/watirspec/images_spec.rb +31 -0
  47. data/spec/watirspec/label_spec.rb +75 -0
  48. data/spec/watirspec/labels_spec.rb +31 -0
  49. data/spec/watirspec/li_spec.rb +112 -0
  50. data/spec/watirspec/lib/guards.rb +59 -0
  51. data/spec/watirspec/lib/server.rb +136 -0
  52. data/spec/watirspec/lib/spec_helper.rb +79 -0
  53. data/spec/watirspec/lib/watirspec.rb +72 -0
  54. data/spec/watirspec/link_spec.rb +168 -0
  55. data/spec/watirspec/links_spec.rb +35 -0
  56. data/spec/watirspec/lis_spec.rb +31 -0
  57. data/spec/watirspec/map_spec.rb +76 -0
  58. data/spec/watirspec/maps_spec.rb +32 -0
  59. data/spec/watirspec/meta_spec.rb +22 -0
  60. data/spec/watirspec/metas_spec.rb +30 -0
  61. data/spec/watirspec/ol_spec.rb +78 -0
  62. data/spec/watirspec/ols_spec.rb +31 -0
  63. data/spec/watirspec/option_spec.rb +173 -0
  64. data/spec/watirspec/p_spec.rb +128 -0
  65. data/spec/watirspec/pre_spec.rb +112 -0
  66. data/spec/watirspec/pres_spec.rb +31 -0
  67. data/spec/watirspec/ps_spec.rb +31 -0
  68. data/spec/watirspec/radio_spec.rb +255 -0
  69. data/spec/watirspec/radios_spec.rb +32 -0
  70. data/spec/watirspec/select_list_spec.rb +318 -0
  71. data/spec/watirspec/select_lists_spec.rb +35 -0
  72. data/spec/watirspec/span_spec.rb +142 -0
  73. data/spec/watirspec/spans_spec.rb +31 -0
  74. data/spec/watirspec/spec_helper.rb +17 -0
  75. data/spec/watirspec/strong_spec.rb +89 -0
  76. data/spec/watirspec/strongs_spec.rb +32 -0
  77. data/spec/watirspec/table_bodies_spec.rb +45 -0
  78. data/spec/watirspec/table_body_spec.rb +98 -0
  79. data/spec/watirspec/table_cell_spec.rb +68 -0
  80. data/spec/watirspec/table_cells_spec.rb +47 -0
  81. data/spec/watirspec/table_footer_spec.rb +85 -0
  82. data/spec/watirspec/table_footers_spec.rb +47 -0
  83. data/spec/watirspec/table_header_spec.rb +85 -0
  84. data/spec/watirspec/table_headers_spec.rb +45 -0
  85. data/spec/watirspec/table_row_spec.rb +87 -0
  86. data/spec/watirspec/table_rows_spec.rb +50 -0
  87. data/spec/watirspec/table_spec.rb +160 -0
  88. data/spec/watirspec/tables_spec.rb +33 -0
  89. data/spec/watirspec/text_field_spec.rb +276 -0
  90. data/spec/watirspec/text_fields_spec.rb +35 -0
  91. data/spec/watirspec/ul_spec.rb +76 -0
  92. data/spec/watirspec/uls_spec.rb +33 -0
  93. data/support/html5/html5.idl +1 -1
  94. metadata +181 -21
@@ -0,0 +1,242 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Button" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exists?" do
12
+ it "returns true if the button exists" do
13
+ browser.button(:id, "new_user_submit").should exist
14
+ browser.button(:id, /new_user_submit/).should exist
15
+ browser.button(:name, "new_user_reset").should exist
16
+ browser.button(:name, /new_user_reset/).should exist
17
+ browser.button(:value, "Button 2").should exist
18
+ browser.button(:value, /Button 2/).should exist
19
+ browser.button(:src, "images/button.jpg").should exist
20
+ browser.button(:src, /button.jpg/).should exist
21
+ browser.button(:text, "Button 2").should exist
22
+ browser.button(:text, /Button 2/).should exist
23
+ browser.button(:class, "image").should exist
24
+ browser.button(:class, /image/).should exist
25
+ browser.button(:index, 0).should exist
26
+ browser.button(:xpath, "//input[@id='new_user_submit']").should exist
27
+ browser.button(:alt, "Create a new user").should exist
28
+ browser.button(:alt, /Create a/).should exist
29
+ end
30
+
31
+ it "returns true if the button exists (how = :caption)" do
32
+ browser.button(:caption, "Button 2").should exist
33
+ browser.button(:caption, /Button 2/).should exist
34
+ end
35
+
36
+ it "returns false if the button doesn't exist" do
37
+ browser.button(:id, "no_such_id").should_not exist
38
+ browser.button(:id, /no_such_id/).should_not exist
39
+ browser.button(:name, "no_such_name").should_not exist
40
+ browser.button(:name, /no_such_name/).should_not exist
41
+ browser.button(:value, "no_such_value").should_not exist
42
+ browser.button(:value, /no_such_value/).should_not exist
43
+ browser.button(:src, "no_such_src").should_not exist
44
+ browser.button(:src, /no_such_src/).should_not exist
45
+ browser.button(:text, "no_such_text").should_not exist
46
+ browser.button(:text, /no_such_text/).should_not exist
47
+ browser.button(:class, "no_such_class").should_not exist
48
+ browser.button(:class, /no_such_class/).should_not exist
49
+ browser.button(:index, 1337).should_not exist
50
+ browser.button(:xpath, "//input[@id='no_such_id']").should_not exist
51
+ end
52
+
53
+ it "raises TypeError when 'what' argument is invalid" do
54
+ lambda { browser.button(:id, 3.14).exists? }.should raise_error(TypeError)
55
+ end
56
+
57
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
58
+ lambda { browser.button(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
59
+ end
60
+
61
+ # it "locates the correct button when there are duplicate ids and user disambiguates by parent" do
62
+ # browser.goto(WatirSpec.files + "/buttons_with_duplicate_ids.html")
63
+ # browser.form(:name, "bar-form").button(:id, 'next').parent.name.should == "bar-form"
64
+ # end
65
+ end
66
+
67
+ # Attribute methods
68
+ describe "#class_name" do
69
+ it "returns the class name of the button" do
70
+ browser.button(:name, "new_user_image").class_name.should == "image"
71
+ end
72
+
73
+ it "returns an empty string if the button has no class name" do
74
+ browser.button(:name, "new_user_submit").class_name.should == ""
75
+ end
76
+ end
77
+
78
+ describe "#id" do
79
+ it "returns the id if the button exists" do
80
+ browser.button(:index, 0).id.should == 'new_user_submit'
81
+ browser.button(:index, 1).id.should == 'new_user_reset'
82
+ browser.button(:index, 2).id.should == 'new_user_button'
83
+ end
84
+
85
+ it "raises UnknownObjectException if button does not exist" do
86
+ lambda { browser.button(:index, 1337).id }.should raise_error(UnknownObjectException)
87
+ end
88
+ end
89
+
90
+ describe "#name" do
91
+ it "returns the name if button exists" do
92
+ browser.button(:index, 0).name.should == 'new_user_submit'
93
+ browser.button(:index, 1).name.should == 'new_user_reset'
94
+ browser.button(:index, 2).name.should == 'new_user_button'
95
+ end
96
+
97
+ it "raises UnknownObjectException if the button does not exist" do
98
+ lambda { browser.button(:name, "no_such_name").name }.should raise_error(UnknownObjectException)
99
+ end
100
+ end
101
+
102
+ describe "#src" do
103
+ not_compliant_on :watir do
104
+ it "returns the src attribute for the button image" do
105
+ browser.button(:name, "new_user_image").src.should == "images/button.jpg"
106
+ end
107
+ end
108
+
109
+ deviates_on :watir do
110
+ it "returns the full url for the button image" do
111
+ browser.button(:name, "new_user_image").src.should == "file:///#{File.dirname(__FILE__)}/images/button.jpg"
112
+ end
113
+ end
114
+
115
+ it "raises UnknownObjectException if the button does not exist" do
116
+ lambda { browser.button(:name, "no_such_name").src }.should raise_error(UnknownObjectException)
117
+ end
118
+ end
119
+
120
+ describe "#style" do
121
+ deviates_on :watir do
122
+ it "returns the style attribute if the button exists" do
123
+ browser.button(:id, 'delete_user_submit').style.should == "border-right: red 4px solid; border-top: red 4px solid; border-left: red 4px solid; border-bottom: red 4px solid"
124
+ end
125
+ end
126
+
127
+ not_compliant_on :watir do
128
+ it "returns the style attribute if the button exists" do
129
+ browser.button(:id, 'delete_user_submit').style.should == "border: 4px solid red;"
130
+ end
131
+ end
132
+
133
+ it "returns an empty string if the element exists and the attribute doesn't exist" do
134
+ browser.button(:id, 'new_user_submit').style.should == ""
135
+ end
136
+
137
+ it "raises UnknownObjectException if the button does not exist" do
138
+ lambda { browser.button(:name, "no_such_name").style }.should raise_error(UnknownObjectException)
139
+ end
140
+ end
141
+
142
+ describe "#title" do
143
+ it "returns the title of the button" do
144
+ browser.button(:index, 0).title.should == 'Submit the form'
145
+ end
146
+
147
+ it "returns an empty string for button without title" do
148
+ browser.button(:index, 1).title.should == ''
149
+ end
150
+ end
151
+
152
+ describe "#type" do
153
+ it "returns the type if button exists" do
154
+ browser.button(:index, 0).type.should == 'submit'
155
+ browser.button(:index, 1).type.should == 'reset'
156
+ browser.button(:index, 2).type.should == 'button'
157
+ end
158
+
159
+ it "raises UnknownObjectException if button does not exist" do
160
+ lambda { browser.button(:name, "no_such_name").type }.should raise_error(UnknownObjectException)
161
+ end
162
+ end
163
+
164
+ describe "#value" do
165
+ it "returns the value if button exists" do
166
+ browser.button(:index, 0).value.should == 'Submit'
167
+ browser.button(:index, 1).value.should == 'Reset'
168
+ browser.button(:index, 2).value.should == 'Button'
169
+ end
170
+
171
+ it "raises UnknownObjectException if button does not exist" do
172
+ lambda { browser.button(:name, "no_such_name").value }.should raise_error(UnknownObjectException)
173
+ end
174
+ end
175
+
176
+ describe "#respond_to?" do
177
+ it "returns true for all attribute methods" do
178
+ browser.button(:index, 0).should respond_to(:class_name)
179
+ browser.button(:index, 0).should respond_to(:id)
180
+ browser.button(:index, 0).should respond_to(:name)
181
+ browser.button(:index, 0).should respond_to(:src)
182
+ browser.button(:index, 0).should respond_to(:style)
183
+ browser.button(:index, 0).should respond_to(:title)
184
+ browser.button(:index, 0).should respond_to(:type)
185
+ browser.button(:index, 0).should respond_to(:value)
186
+ end
187
+ end
188
+
189
+ # Access methods
190
+ describe "#enabled?" do
191
+ it "returns true if the button is enabled" do
192
+ browser.button(:name, 'new_user_submit').should be_enabled
193
+ end
194
+
195
+ it "returns false if the button is disabled" do
196
+ browser.button(:name, 'new_user_submit_disabled').should_not be_enabled
197
+ end
198
+
199
+ it "raises UnknownObjectException if the button doesn't exist" do
200
+ lambda { browser.button(:name, "no_such_name").enabled? }.should raise_error(UnknownObjectException)
201
+ end
202
+ end
203
+
204
+ describe "#disabled?" do
205
+ it "returns false when button is enabled" do
206
+ browser.button(:name, 'new_user_submit').should_not be_disabled
207
+ end
208
+
209
+ it "returns true when button is disabled" do
210
+ browser.button(:name, 'new_user_submit_disabled').should be_disabled
211
+ end
212
+
213
+ it "raises UnknownObjectException if button does not exist" do
214
+ lambda { browser.button(:name, "no_such_name").disabled? }.should raise_error(UnknownObjectException)
215
+ end
216
+ end
217
+
218
+ # Manipulation methods
219
+ describe "#click" do
220
+ it "clicks the button if it exists" do
221
+ browser.goto(WatirSpec.host + "/forms_with_input_elements.html")
222
+ browser.button(:id, 'new_user_submit').click
223
+ browser.text.should include("You posted the following content:")
224
+ end
225
+
226
+ it "fires events" do
227
+ browser.button(:id, 'new_user_button').click
228
+ browser.button(:id, 'new_user_button').value.should == 'new_value_set_by_onclick_event'
229
+ end
230
+
231
+ it "raises UnknownObjectException when clicking a button that doesn't exist" do
232
+ lambda { browser.button(:value, "no_such_value").click }.should raise_error(UnknownObjectException)
233
+ lambda { browser.button(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
234
+ end
235
+
236
+ it "raises ObjectDisabledException when clicking a disabled button" do
237
+ lambda { browser.button(:value, "Disabled").click }.should raise_error(ObjectDisabledException)
238
+ end
239
+ end
240
+
241
+
242
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Buttons" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ bug "WTR-349", :watir do
12
+ it "returns the number of buttons" do
13
+ browser.buttons.length.should == 8
14
+ end
15
+ end
16
+ end
17
+
18
+ describe "#[]" do
19
+ it "returns the button at the given index" do
20
+ browser.buttons[0].title.should == "Submit the form"
21
+ end
22
+ end
23
+
24
+ describe "#first" do
25
+ it "returns the first element in the collection" do
26
+ browser.buttons.first.value.should == browser.buttons[0].value
27
+ end
28
+ end
29
+
30
+ describe "#last" do
31
+ bug "WTR-349", :watir do
32
+ it "returns the last element in the collection" do
33
+ browser.buttons.last.value.should == browser.buttons[-1].value
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "#each" do
39
+ it "iterates through buttons correctly" do
40
+ browser.buttons.each_with_index do |b, index|
41
+ b.name.should == browser.button(:index, index).name
42
+ b.id.should == browser.button(:index, index).id
43
+ b.value.should == browser.button(:index, index).value
44
+ end
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,272 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "CheckBox" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ # Exists method
11
+
12
+ describe "#exists?" do
13
+ it "returns true if the checkbox button exists" do
14
+ browser.checkbox(:id, "new_user_interests_books").should exist
15
+ browser.checkbox(:id, /new_user_interests_books/).should exist
16
+ browser.checkbox(:name, "new_user_interests").should exist
17
+ browser.checkbox(:name, /new_user_interests/).should exist
18
+ browser.checkbox(:value, "books").should exist
19
+ browser.checkbox(:value, /books/).should exist
20
+ # not sure what :text is supposed to represent here
21
+ # browser.checkbox(:text, "books").should exist
22
+ # browser.checkbox(:text, /books/).should exist
23
+ browser.checkbox(:class, "fun").should exist
24
+ browser.checkbox(:class, /fun/).should exist
25
+ browser.checkbox(:index, 0).should exist
26
+ browser.checkbox(:xpath, "//input[@id='new_user_interests_books']").should exist
27
+ end
28
+
29
+ it "returns true if the checkbox button exists (search by name and value)" do
30
+ browser.checkbox(:name => "new_user_interests", :value => 'cars').should exist
31
+ browser.checkbox(:xpath, "//input[@name='new_user_interests' and @value='cars']").set
32
+ end
33
+
34
+ it "returns false if the checkbox button does not exist" do
35
+ browser.checkbox(:id, "no_such_id").should_not exist
36
+ browser.checkbox(:id, /no_such_id/).should_not exist
37
+ browser.checkbox(:name, "no_such_name").should_not exist
38
+ browser.checkbox(:name, /no_such_name/).should_not exist
39
+ browser.checkbox(:value, "no_such_value").should_not exist
40
+ browser.checkbox(:value, /no_such_value/).should_not exist
41
+ browser.checkbox(:text, "no_such_text").should_not exist
42
+ browser.checkbox(:text, /no_such_text/).should_not exist
43
+ browser.checkbox(:class, "no_such_class").should_not exist
44
+ browser.checkbox(:class, /no_such_class/).should_not exist
45
+ browser.checkbox(:index, 1337).should_not exist
46
+ browser.checkbox(:xpath, "//input[@id='no_such_id']").should_not exist
47
+ end
48
+
49
+ it "returns false if the checkbox button does not exist (search by name and value)" do
50
+ browser.checkbox(:name => "new_user_interests", :value => 'no_such_value').should_not exist
51
+ browser.checkbox(:xpath, "//input[@name='new_user_interests' and @value='no_such_value']").should_not exist
52
+ browser.checkbox(:name => "no_such_name", :value => 'cars').should_not exist
53
+ browser.checkbox(:xpath, "//input[@name='no_such_name' and @value='cars']").should_not exist
54
+ end
55
+
56
+ it "returns true for checkboxs with a string value" do
57
+ browser.checkbox(:name => 'new_user_interests', :value => 'books').should exist
58
+ browser.checkbox(:name => 'new_user_interests', :value => 'cars').should exist
59
+ end
60
+
61
+ it "raises TypeError when 'what' argument is invalid" do
62
+ lambda { browser.checkbox(:id, 3.14).exists? }.should raise_error(TypeError)
63
+ end
64
+
65
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
66
+ lambda { browser.checkbox(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
67
+ end
68
+ end
69
+
70
+ # Attribute methods
71
+
72
+ describe "#class_name" do
73
+ it "returns the class name if the checkbox exists and has an attribute" do
74
+ browser.checkbox(:id, "new_user_interests_dancing").class_name.should == "fun"
75
+ end
76
+
77
+ it "returns an emptry string if the checkbox exists and the attribute doesn't" do
78
+ browser.checkbox(:id, "new_user_interests_books").class_name.should == ""
79
+ end
80
+
81
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
82
+ lambda { browser.checkbox(:id, "no_such_id").class_name }.should raise_error(UnknownObjectException)
83
+ end
84
+ end
85
+
86
+ describe "#id" do
87
+ it "returns the id attribute if the checkbox exists and has an attribute" do
88
+ browser.checkbox(:index, 0).id.should == "new_user_interests_books"
89
+ end
90
+
91
+ it "returns an emptry string if the checkbox exists and the attribute doesn't" do
92
+ browser.checkbox(:index, 1).id.should == ""
93
+ end
94
+
95
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
96
+ lambda { browser.checkbox(:index, 1337).id }.should raise_error(UnknownObjectException)
97
+ end
98
+ end
99
+
100
+ describe "#name" do
101
+ it "returns the name attribute if the checkbox exists" do
102
+ browser.checkbox(:id, 'new_user_interests_books').name.should == "new_user_interests"
103
+ end
104
+
105
+ it "returns an empty string if the checkbox exists and the attribute doesn't" do
106
+ browser.checkbox(:id, 'new_user_interests_food').name.should == ""
107
+ end
108
+
109
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
110
+ lambda { browser.checkbox(:index, 1337).name }.should raise_error(UnknownObjectException)
111
+ end
112
+ end
113
+
114
+ describe "#title" do
115
+ it "returns the title attribute if the checkbox exists" do
116
+ browser.checkbox(:id, "new_user_interests_dancing").title.should == "Dancing is fun!"
117
+ end
118
+
119
+ it "returns an emptry string if the checkbox exists and the attribute doesn't" do
120
+ browser.checkbox(:id, "new_user_interests_books").title.should == ""
121
+ end
122
+
123
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
124
+ lambda { browser.checkbox(:index, 1337).title }.should raise_error(UnknownObjectException)
125
+ end
126
+ end
127
+
128
+ describe "#type" do
129
+ it "returns the type attribute if the checkbox exists" do
130
+ browser.checkbox(:index, 0).type.should == "checkbox"
131
+ end
132
+
133
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
134
+ lambda { browser.checkbox(:index, 1337).type }.should raise_error(UnknownObjectException)
135
+ end
136
+ end
137
+
138
+ describe "#value" do
139
+ it "returns the value attribute if the checkbox exists" do
140
+ browser.checkbox(:id, 'new_user_interests_books').value.should == 'books'
141
+ end
142
+
143
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
144
+ lambda { browser.checkbox(:index, 1337).value}.should raise_error(UnknownObjectException)
145
+ end
146
+ end
147
+
148
+ describe "#respond_to?" do
149
+ it "returns true for all attribute methods" do
150
+ browser.checkbox(:index, 0).should respond_to(:class_name)
151
+ browser.checkbox(:index, 0).should respond_to(:id)
152
+ browser.checkbox(:index, 0).should respond_to(:name)
153
+ browser.checkbox(:index, 0).should respond_to(:title)
154
+ browser.checkbox(:index, 0).should respond_to(:type)
155
+ browser.checkbox(:index, 0).should respond_to(:value)
156
+ end
157
+ end
158
+
159
+ # Access methods
160
+
161
+ describe "#enabled?" do
162
+ it "returns true if the checkbox button is enabled" do
163
+ browser.checkbox(:id, "new_user_interests_books").should be_enabled
164
+ browser.checkbox(:xpath, "//input[@id='new_user_interests_books']").should be_enabled
165
+ end
166
+
167
+ it "returns false if the checkbox button is disabled" do
168
+ browser.checkbox(:id, "new_user_interests_dentistry").should_not be_enabled
169
+ browser.checkbox(:xpath,"//input[@id='new_user_interests_dentistry']").should_not be_enabled
170
+ end
171
+
172
+ it "raises UnknownObjectException if the checkbox button doesn't exist" do
173
+ lambda { browser.checkbox(:id, "no_such_id").enabled? }.should raise_error(UnknownObjectException)
174
+ lambda { browser.checkbox(:xpath, "//input[@id='no_such_id']").enabled? }.should raise_error(UnknownObjectException)
175
+ end
176
+ end
177
+
178
+ describe "#disabled?" do
179
+ it "returns true if the checkbox is disabled" do
180
+ browser.checkbox(:id, 'new_user_interests_dentistry').should be_disabled
181
+ end
182
+
183
+ it "returns false if the checkbox is enabled" do
184
+ browser.checkbox(:id, 'new_user_interests_books').should_not be_disabled
185
+ end
186
+
187
+ it "raises UnknownObjectException if the checkbox doesn't exist" do
188
+ lambda { browser.checkbox(:index, 1337).disabled? }.should raise_error(UnknownObjectException)
189
+ end
190
+ end
191
+
192
+ # Manipulation methods
193
+
194
+ describe "#clear" do
195
+ it "raises ObjectDisabledException if the checkbox is disabled" do
196
+ browser.checkbox(:id, "new_user_interests_dentistry").should_not be_set
197
+ lambda { browser.checkbox(:id, "new_user_interests_dentistry").clear }.should raise_error(ObjectDisabledException)
198
+ lambda { browser.checkbox(:xpath, "//input[@id='new_user_interests_dentistry']").clear }.should raise_error(ObjectDisabledException)
199
+ end
200
+
201
+ it "clears the checkbox button if it is set" do
202
+ browser.checkbox(:id, "new_user_interests_books").clear
203
+ browser.checkbox(:id, "new_user_interests_books").should_not be_set
204
+ end
205
+
206
+ it "clears the checkbox button when found by :xpath" do
207
+ browser.checkbox(:xpath, "//input[@id='new_user_interests_books']").clear
208
+ browser.checkbox(:xpath, "//input[@id='new_user_interests_books']").should_not be_set
209
+ end
210
+
211
+ it "raises UnknownObjectException if the checkbox button doesn't exist" do
212
+ lambda { browser.checkbox(:name, "no_such_id").clear }.should raise_error(UnknownObjectException)
213
+ lambda { browser.checkbox(:xpath, "//input[@id='no_such_id']").clear }.should raise_error(UnknownObjectException)
214
+ end
215
+ end
216
+
217
+ describe "#set" do
218
+ it "sets the checkbox button" do
219
+ browser.checkbox(:id, "new_user_interests_cars").set
220
+ browser.checkbox(:id, "new_user_interests_cars").should be_set
221
+ end
222
+
223
+ it "sets the checkbox button when found by :xpath" do
224
+ browser.checkbox(:xpath, "//input[@id='new_user_interests_cars']").set
225
+ browser.checkbox(:xpath, "//input[@id='new_user_interests_cars']").should be_set
226
+ end
227
+
228
+ it "fires the onclick event" do
229
+ browser.button(:id, "disabled_button").should be_disabled
230
+ browser.checkbox(:id, "toggle_button_checkbox").set
231
+ browser.button(:id, "disabled_button").should_not be_disabled
232
+ browser.checkbox(:id, "toggle_button_checkbox").clear
233
+ browser.button(:id, "disabled_button").should be_disabled
234
+ end
235
+
236
+ it "raises UnknownObjectException if the checkbox button doesn't exist" do
237
+ lambda { browser.checkbox(:name, "no_such_name").set }.should raise_error(UnknownObjectException)
238
+ lambda { browser.checkbox(:xpath, "//input[@name='no_such_name']").set }.should raise_error(UnknownObjectException)
239
+ end
240
+
241
+ it "raises ObjectDisabledException if the checkbox is disabled" do
242
+ lambda { browser.checkbox(:id, "new_user_interests_dentistry").set }.should raise_error(ObjectDisabledException)
243
+ lambda { browser.checkbox(:xpath, "//input[@id='new_user_interests_dentistry']").set }.should raise_error(ObjectDisabledException )
244
+ end
245
+ end
246
+
247
+ # Other
248
+
249
+ describe '#set?' do
250
+ it "returns true if the checkbox button is set" do
251
+ browser.checkbox(:id, "new_user_interests_books").should be_set
252
+ end
253
+
254
+ it "returns false if the checkbox button unset" do
255
+ browser.checkbox(:id, "new_user_interests_cars").should_not be_set
256
+ end
257
+
258
+ it "returns the state for checkboxs with string values" do
259
+ browser.checkbox(:name => "new_user_interests", :value => 'cars').should_not be_set
260
+ browser.checkbox(:name => "new_user_interests", :value => 'cars').set
261
+ browser.checkbox(:name => "new_user_interests", :value => 'cars').should be_set
262
+ browser.checkbox(:name => "new_user_interests", :value => 'cars').clear
263
+ browser.checkbox(:name => "new_user_interests", :value => 'cars').should_not be_set
264
+ end
265
+
266
+ it "raises UnknownObjectException if the checkbox button doesn't exist" do
267
+ lambda { browser.checkbox(:id, "no_such_id").set? }.should raise_error(UnknownObjectException)
268
+ lambda { browser.checkbox(:xpath, "//input[@id='no_such_id']").set? }.should raise_error(UnknownObjectException)
269
+ end
270
+ end
271
+
272
+ end