celerity 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +14 -0
  3. data/Manifest.txt +127 -151
  4. data/README.txt +15 -20
  5. data/lib/celerity.rb +13 -5
  6. data/lib/celerity/browser.rb +296 -0
  7. data/lib/celerity/clickable_element.rb +1 -0
  8. data/lib/celerity/collections.rb +4 -0
  9. data/lib/celerity/container.rb +69 -2
  10. data/lib/celerity/disabled_element.rb +1 -0
  11. data/lib/celerity/element.rb +103 -38
  12. data/lib/celerity/element_collections.rb +14 -8
  13. data/lib/celerity/element_locator.rb +61 -50
  14. data/lib/celerity/element_map.rb +51 -0
  15. data/lib/celerity/elements/button.rb +1 -0
  16. data/lib/celerity/elements/file_field.rb +3 -2
  17. data/lib/celerity/elements/form.rb +1 -0
  18. data/lib/celerity/elements/frame.rb +16 -1
  19. data/lib/celerity/elements/image.rb +15 -13
  20. data/lib/celerity/elements/link.rb +4 -1
  21. data/lib/celerity/elements/option.rb +1 -0
  22. data/lib/celerity/elements/radio_check.rb +19 -7
  23. data/lib/celerity/elements/select_list.rb +17 -2
  24. data/lib/celerity/elements/table.rb +34 -20
  25. data/lib/celerity/elements/table_body.rb +2 -2
  26. data/lib/celerity/elements/table_cell.rb +3 -1
  27. data/lib/celerity/elements/table_footer.rb +2 -2
  28. data/lib/celerity/elements/table_header.rb +2 -2
  29. data/lib/celerity/elements/table_row.rb +4 -2
  30. data/lib/celerity/elements/text_field.rb +20 -9
  31. data/lib/celerity/exception.rb +11 -18
  32. data/lib/celerity/extra/method_generator.rb +13 -8
  33. data/lib/celerity/htmlunit/download.sh +23 -0
  34. data/lib/celerity/htmlunit/htmlunit-2.2.jar +0 -0
  35. data/lib/celerity/htmlunit/htmlunit-core-js-2.2.jar +0 -0
  36. data/lib/celerity/htmlunit/{nekohtml-1.9.7.jar → nekohtml-1.9.8.jar} +0 -0
  37. data/lib/celerity/input_element.rb +1 -1
  38. data/lib/celerity/version.rb +1 -1
  39. data/lib/celerity/watir_compatibility.rb +37 -23
  40. data/spec/area_spec.rb +19 -4
  41. data/spec/areas_spec.rb +2 -3
  42. data/spec/{ie_spec.rb → browser_spec.rb} +66 -15
  43. data/spec/button_spec.rb +36 -3
  44. data/spec/buttons_spec.rb +2 -3
  45. data/spec/checkbox_spec.rb +43 -8
  46. data/spec/checkboxes_spec.rb +2 -3
  47. data/spec/div_spec.rb +31 -4
  48. data/spec/divs_spec.rb +2 -3
  49. data/spec/element_spec.rb +36 -6
  50. data/spec/filefield_spec.rb +28 -13
  51. data/spec/filefields_spec.rb +2 -3
  52. data/spec/form_spec.rb +6 -3
  53. data/spec/forms_spec.rb +2 -3
  54. data/spec/frame_spec.rb +14 -5
  55. data/spec/frames_spec.rb +71 -0
  56. data/spec/hidden_spec.rb +21 -3
  57. data/spec/hiddens_spec.rb +2 -3
  58. data/spec/hn_spec.rb +30 -12
  59. data/spec/hns_spec.rb +14 -10
  60. data/spec/html/form_js_bug.html +11 -0
  61. data/spec/html/forms_with_input_elements.html +2 -1
  62. data/spec/html/invalid_js.html +11 -0
  63. data/spec/html/latin1_text.html +1 -0
  64. data/spec/html/non_control_elements.html +8 -4
  65. data/spec/html/simple_ajax.html +22 -0
  66. data/spec/htmlunit_spec.rb +4 -5
  67. data/spec/image_spec.rb +33 -3
  68. data/spec/images_spec.rb +2 -3
  69. data/spec/label_spec.rb +16 -3
  70. data/spec/labels_spec.rb +2 -3
  71. data/spec/li_spec.rb +25 -3
  72. data/spec/link_spec.rb +35 -3
  73. data/spec/links_spec.rb +2 -3
  74. data/spec/lis_spec.rb +2 -3
  75. data/spec/map_spec.rb +19 -3
  76. data/spec/maps_spec.rb +2 -3
  77. data/spec/meta_spec.rb +3 -1
  78. data/spec/ol_spec.rb +17 -3
  79. data/spec/ols_spec.rb +2 -3
  80. data/spec/option_spec.rb +28 -3
  81. data/spec/p_spec.rb +30 -2
  82. data/spec/pre_spec.rb +25 -3
  83. data/spec/pres_spec.rb +2 -3
  84. data/spec/ps_spec.rb +2 -3
  85. data/spec/radio_spec.rb +47 -3
  86. data/spec/radios_spec.rb +2 -3
  87. data/spec/select_list_spec.rb +42 -3
  88. data/spec/select_lists_spec.rb +2 -3
  89. data/spec/span_spec.rb +32 -7
  90. data/spec/spans_spec.rb +2 -4
  91. data/spec/spec_helper.rb +5 -25
  92. data/spec/table_bodies_spec.rb +7 -5
  93. data/spec/table_body_spec.rb +11 -4
  94. data/spec/table_cell_spec.rb +15 -4
  95. data/spec/table_cells_spec.rb +3 -4
  96. data/spec/table_footer_spec.rb +11 -4
  97. data/spec/table_footers_spec.rb +7 -5
  98. data/spec/table_header_spec.rb +11 -4
  99. data/spec/table_headers_spec.rb +7 -5
  100. data/spec/table_row_spec.rb +31 -7
  101. data/spec/table_rows_spec.rb +5 -4
  102. data/spec/table_spec.rb +36 -7
  103. data/spec/tables_spec.rb +2 -3
  104. data/spec/text_field_spec.rb +51 -13
  105. data/spec/text_fields_spec.rb +2 -3
  106. data/spec/ul_spec.rb +18 -3
  107. data/spec/uls_spec.rb +2 -3
  108. data/spec/{watir_compatability_spec.rb → watir_compatibility_spec.rb} +42 -35
  109. data/support/spec_server.rb +9 -0
  110. metadata +167 -161
  111. metadata.gz.sig +0 -0
  112. data/benchmark/bm_2000_spans.rb +0 -48
  113. data/benchmark/bm_digg.rb +0 -26
  114. data/benchmark/bm_google_images.rb +0 -36
  115. data/benchmark/bm_input_locator.rb +0 -69
  116. data/benchmark/loader.rb +0 -9
  117. data/config/hoe.rb +0 -68
  118. data/config/requirements.rb +0 -15
  119. data/lib/celerity/htmlunit/htmlunit-2.2-SNAPSHOT.jar +0 -0
  120. data/lib/celerity/htmlunit/js-1.7R1.jar +0 -0
  121. data/lib/celerity/ie.rb +0 -195
  122. data/setup.rb +0 -1583
  123. data/support/celerity_viewer/rubycocoa/CelerityViewer.icns +0 -0
  124. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/classes.nib +0 -37
  125. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/info.nib +0 -19
  126. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/keyedobjects.nib +0 -0
  127. data/support/celerity_viewer/rubycocoa/Info.plist.erb +0 -28
  128. data/support/celerity_viewer/rubycocoa/MainController.rb +0 -23
  129. data/support/celerity_viewer/rubycocoa/README +0 -94
  130. data/support/celerity_viewer/rubycocoa/Rakefile +0 -100
  131. data/support/celerity_viewer/rubycocoa/distributed_viewer.rb +0 -86
  132. data/support/celerity_viewer/rubycocoa/main.m +0 -7
  133. data/support/celerity_viewer/rubycocoa/main.rb +0 -27
  134. data/tasks/benchmark.rake +0 -4
  135. data/tasks/environment.rake +0 -7
  136. data/tasks/simple_ci.rake +0 -94
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Link do
3
+ describe "Link" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -27,9 +26,11 @@ describe Link do
27
26
  @browser.link(:index, 2).should exist
28
27
  @browser.link(:xpath, "//a[@id='link_2']").should exist
29
28
  end
29
+
30
30
  it "should return true if the element exists (default how = :href)" do
31
31
  @browser.link(/input_elements/).should exist
32
32
  end
33
+
33
34
  it "should return false if the link doesn't exist" do
34
35
  @browser.link(:id, 'no_such_id').should_not exist
35
36
  @browser.link(:id, /no_such_id/).should_not exist
@@ -44,9 +45,11 @@ describe Link do
44
45
  @browser.link(:index, 1337).should_not exist
45
46
  @browser.link(:xpath, "//a[@id='no_such_id']").should_not exist
46
47
  end
48
+
47
49
  it "should raise ArgumentError when 'what' argument is invalid" do
48
50
  lambda { @browser.link(:id, 3.14).exists? }.should raise_error(ArgumentError)
49
51
  end
52
+
50
53
  it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
51
54
  lambda { @browser.link(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
52
55
  end
@@ -57,9 +60,11 @@ describe Link do
57
60
  it "should return the type attribute if the link exists" do
58
61
  @browser.link(:index, 2).class_name.should == "external"
59
62
  end
63
+
60
64
  it "should return an empty string if the link exists and the attribute doesn't" do
61
65
  @browser.link(:index, 1).class_name.should == ''
62
66
  end
67
+
63
68
  it "should raise an UnknownObjectException if the link doesn't exist" do
64
69
  lambda { @browser.link(:index, 1337).class_name }.should raise_error(UnknownObjectException)
65
70
  end
@@ -69,9 +74,11 @@ describe Link do
69
74
  it "should return the href attribute if the link exists" do
70
75
  @browser.link(:index, 2).href.should match(/non_control_elements/)
71
76
  end
77
+
72
78
  it "should return an empty string if the link exists and the attribute doesn't" do
73
79
  @browser.link(:index, 1).href.should == ""
74
80
  end
81
+
75
82
  it "should raise an UnknownObjectException if the link doesn't exist" do
76
83
  lambda { @browser.link(:index, 1337).href }.should raise_error(UnknownObjectException)
77
84
  end
@@ -87,9 +94,11 @@ describe Link do
87
94
  it "should return the id attribute if the link exists" do
88
95
  @browser.link(:index, 2).id.should == "link_2"
89
96
  end
97
+
90
98
  it "should return an empty string if the link exists and the attribute doesn't" do
91
99
  @browser.link(:index, 1).id.should == ""
92
100
  end
101
+
93
102
  it "should raise an UnknownObjectException if the link doesn't exist" do
94
103
  lambda { @browser.link(:index, 1337).id }.should raise_error(UnknownObjectException)
95
104
  end
@@ -99,9 +108,11 @@ describe Link do
99
108
  it "should return the name attribute if the link exists" do
100
109
  @browser.link(:index, 3).name.should == "bad_attribute"
101
110
  end
111
+
102
112
  it "should return an empty string if the link exists and the attribute doesn't" do
103
113
  @browser.link(:index, 1).name.should == ''
104
114
  end
115
+
105
116
  it "should raise an UnknownObjectException if the link doesn't exist" do
106
117
  lambda { @browser.link(:index, 1337).name }.should raise_error(UnknownObjectException)
107
118
  end
@@ -111,9 +122,11 @@ describe Link do
111
122
  it "should return the link text" do
112
123
  @browser.link(:index, 2).text.should == "Link 2"
113
124
  end
125
+
114
126
  it "should return an empty string if the link exists and contains no text" do
115
127
  @browser.link(:index, 1).text.should == ""
116
128
  end
129
+
117
130
  it "should raise an UnknownObjectException if the link doesn't exist" do
118
131
  lambda { @browser.link(:index, 1337).text }.should raise_error(UnknownObjectException)
119
132
  end
@@ -123,28 +136,47 @@ describe Link do
123
136
  it "should return the type attribute if the link exists" do
124
137
  @browser.link(:index, 2).title.should == "link_title_2"
125
138
  end
139
+
126
140
  it "should return an empty string if the link exists and the attribute doesn't" do
127
141
  @browser.link(:index, 1).title.should == ""
128
142
  end
143
+
129
144
  it "should raise an UnknownObjectException if the link doesn't exist" do
130
145
  lambda { @browser.link(:index, 1337).title }.should raise_error(UnknownObjectException)
131
146
  end
132
147
  end
133
148
 
149
+ describe "#respond_to?" do
150
+ it "should return true for all attribute methods" do
151
+ @browser.link(:index, 1).should respond_to(:class_name)
152
+ @browser.link(:index, 1).should respond_to(:href)
153
+ @browser.link(:index, 1).should respond_to(:url)
154
+ @browser.link(:index, 1).should respond_to(:id)
155
+ @browser.link(:index, 1).should respond_to(:name)
156
+ @browser.link(:index, 1).should respond_to(:style)
157
+ @browser.link(:index, 1).should respond_to(:text)
158
+ @browser.link(:index, 1).should respond_to(:title)
159
+ end
160
+ end
161
+
162
+
134
163
  # Manipulation methods
135
164
  describe "#click" do
136
165
  it "should find an existing link by (:text, String) and click it" do
137
166
  @browser.link(:text, "Link 3").click
138
167
  @browser.text.include?("User administration").should be_true
139
168
  end
169
+
140
170
  it "should find an existing link by (:text, Regexp) and click it" do
141
171
  @browser.link(:url, /forms_with_input_elements/).click
142
172
  @browser.text.include?("User administration").should be_true
143
173
  end
174
+
144
175
  it "should find an existing link by (:index, Integer) and click it" do
145
176
  @browser.link(:index, 3).click
146
177
  @browser.text.include?("User administration").should be_true
147
178
  end
179
+
148
180
  it "should raise an UnknownObjectException if the link doesn't exist" do
149
181
  lambda { @browser.link(:index, 1337).click }.should raise_error(UnknownObjectException)
150
182
  end
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Links do
3
+ describe "Links" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Lis do
3
+ describe "Lis" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Map do
3
+ describe "Map" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -21,9 +20,11 @@ describe Map do
21
20
  @browser.map(:index, 1).should exist
22
21
  @browser.map(:xpath, "//map[@id='triangle_map']").should exist
23
22
  end
23
+
24
24
  it "should return true if the element exists (default how = :id)" do
25
25
  @browser.map("triangle_map").should exist
26
26
  end
27
+
27
28
  it "should return false if the 'map' doesn't exist" do
28
29
  @browser.map(:id, "no_such_id").should_not exist
29
30
  @browser.map(:id, /no_such_id/).should_not exist
@@ -32,9 +33,11 @@ describe Map do
32
33
  @browser.map(:index, 1337).should_not exist
33
34
  @browser.map(:xpath, "//map[@id='no_such_id']").should_not exist
34
35
  end
36
+
35
37
  it "should raise ArgumentError when 'what' argument is invalid" do
36
38
  lambda { @browser.map(:id, 3.14).exists? }.should raise_error(ArgumentError)
37
39
  end
40
+
38
41
  it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
39
42
  lambda { @browser.map(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
40
43
  end
@@ -45,9 +48,11 @@ describe Map do
45
48
  it "should return the id attribute" do
46
49
  @browser.map(:index, 1).id.should == "triangle_map"
47
50
  end
51
+
48
52
  it "should return an empty string if the element exists and the attribute doesn't" do
49
53
  @browser.map(:index, 2).id.should == ''
50
54
  end
55
+
51
56
  it "should raise UnknownObjectException if the p doesn't exist" do
52
57
  lambda { @browser.map(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
53
58
  lambda { @browser.map(:index, 1337).id }.should raise_error(UnknownObjectException)
@@ -58,14 +63,24 @@ describe Map do
58
63
  it "should return the name attribute" do
59
64
  @browser.map(:index, 1).name.should == "triangle_map"
60
65
  end
66
+
61
67
  it "should return an empty string if the element exists and the attribute doesn't" do
62
68
  @browser.map(:index, 2).name.should == ''
63
69
  end
70
+
64
71
  it "should raise UnknownObjectException if the p doesn't exist" do
65
72
  lambda { @browser.map(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
66
73
  lambda { @browser.map(:index, 1337).name }.should raise_error(UnknownObjectException)
67
74
  end
68
75
  end
76
+
77
+ describe "#respond_to?" do
78
+ it "should return true for all attribute methods" do
79
+ @browser.map(:index, 1).should respond_to(:id)
80
+ @browser.map(:index, 1).should respond_to(:name)
81
+ end
82
+ end
83
+
69
84
 
70
85
  # Other
71
86
  describe "#to_s" do
@@ -74,6 +89,7 @@ describe Map do
74
89
  " id: triangle_map\n" +
75
90
  " name: triangle_map"
76
91
  end
92
+
77
93
  it "should raise UnknownObjectException if the p doesn't exist" do
78
94
  lambda { @browser.map(:xpath, "//map[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
79
95
  end
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Maps do
3
+ describe "Maps" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -1,4 +1,6 @@
1
- describe Celerity do
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Celerity" do
2
4
  it "should raise error if run on MRI" do
3
5
  `ruby #{File.dirname(__FILE__) + "/../lib/celerity"}`
4
6
  $?.should_not be_success
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Ul do
3
+ describe "Ul" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -19,9 +18,11 @@ describe Ul do
19
18
  @browser.ol(:index, 1).should exist
20
19
  @browser.ol(:xpath, "//ol[@id='favorite_compounds']").should exist
21
20
  end
21
+
22
22
  it "should return true if the element exists (default how = :id)" do
23
23
  @browser.ol("favorite_compounds").should exist
24
24
  end
25
+
25
26
  it "should return false if the 'ol' doesn't exist" do
26
27
  @browser.ol(:id, "no_such_id").should_not exist
27
28
  @browser.ol(:id, /no_such_id/).should_not exist
@@ -32,9 +33,11 @@ describe Ul do
32
33
  @browser.ol(:index, 1337).should_not exist
33
34
  @browser.ol(:xpath, "//ol[@id='no_such_id']").should_not exist
34
35
  end
36
+
35
37
  it "should raise ArgumentError when 'what' argument is invalid" do
36
38
  lambda { @browser.ol(:id, 3.14).exists? }.should raise_error(ArgumentError)
37
39
  end
40
+
38
41
  it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
39
42
  lambda { @browser.ol(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
40
43
  end
@@ -45,9 +48,11 @@ describe Ul do
45
48
  it "should return the class attribute" do
46
49
  @browser.ol(:id, 'favorite_compounds').class_name.should == 'chemistry'
47
50
  end
51
+
48
52
  it "should return an empty string if the element exists and the attribute doesn't" do
49
53
  @browser.ol(:index, 2).class_name.should == ''
50
54
  end
55
+
51
56
  it "should raise UnknownObjectException if the ol doesn't exist" do
52
57
  lambda { @browser.ol(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
53
58
  end
@@ -57,15 +62,24 @@ describe Ul do
57
62
  it "should return the id attribute" do
58
63
  @browser.ol(:class, 'chemistry').id.should == "favorite_compounds"
59
64
  end
65
+
60
66
  it "should return an empty string if the element exists and the attribute doesn't" do
61
67
  @browser.ol(:index, 2).id.should == ''
62
68
  end
69
+
63
70
  it "should raise UnknownObjectException if the ol doesn't exist" do
64
71
  lambda { @browser.ol(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
65
72
  lambda { @browser.ol(:index, 1337).id }.should raise_error(UnknownObjectException)
66
73
  end
67
74
  end
68
75
 
76
+ describe "#respond_to?" do
77
+ it "should return true for all attribute methods" do
78
+ @browser.ol(:index, 1).should respond_to(:class_name)
79
+ @browser.ol(:index, 1).should respond_to(:id)
80
+ end
81
+ end
82
+
69
83
  after :all do
70
84
  @browser.close
71
85
  end
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Ols do
3
+ describe "Ols" do
4
4
 
5
5
  before :all do
6
- @browser = IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -1,10 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Option do
3
+ describe "Option" do
4
4
 
5
5
  before :all do
6
- @browser = Celerity::IE.new
7
- add_spec_checker(@browser)
6
+ @browser = Browser.new
8
7
  end
9
8
 
10
9
  before :each do
@@ -23,6 +22,7 @@ describe Option do
23
22
  @browser.option(:index, 2).should exist
24
23
  @browser.option(:xpath, "//option[@id='nor']").should exist
25
24
  end
25
+
26
26
  it "should return true if the element exists (select_list context)" do
27
27
  @browser.select_list(:name, "new_user_country").option(:id, "nor").should exist
28
28
  @browser.select_list(:name, "new_user_country").option(:id, /nor/).should exist
@@ -34,10 +34,12 @@ describe Option do
34
34
  @browser.select_list(:name, "new_user_country").option(:index, 2).should exist
35
35
  @browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='nor']").should exist
36
36
  end
37
+
37
38
  it "should return true if the element exists (default how = :text)" do
38
39
  @browser.option("Swedish").should exist
39
40
  @browser.select_list(:name, "new_user_languages").option("Swedish").should exist
40
41
  end
42
+
41
43
  it "should return false if the element does not exist (page context)" do
42
44
  @browser.option(:id, "no_such_id").should_not exist
43
45
  @browser.option(:id, /no_such_id/).should_not exist
@@ -49,6 +51,7 @@ describe Option do
49
51
  @browser.option(:index, 1337).should_not exist
50
52
  @browser.option(:xpath, "//option[@id='no_such_id']").should_not exist
51
53
  end
54
+
52
55
  it "should return false if the element does not exist (select_list context)" do
53
56
  @browser.select_list(:name, "new_user_country").option(:id, "no_such_id").should_not exist
54
57
  @browser.select_list(:name, "new_user_country").option(:id, /no_such_id/).should_not exist
@@ -60,10 +63,12 @@ describe Option do
60
63
  @browser.select_list(:name, "new_user_country").option(:index, 1337).should_not exist
61
64
  @browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='no_such_id']").should_not exist
62
65
  end
66
+
63
67
  it "should raise ArgumentError when 'what' argument is invalid" do
64
68
  lambda { @browser.option(:id, 3.14).exists? }.should raise_error(ArgumentError)
65
69
  lambda { @browser.select_list(:name, "new_user_country").option(:id, 3.14).exists? }.should raise_error(ArgumentError)
66
70
  end
71
+
67
72
  it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
68
73
  lambda { @browser.option(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
69
74
  lambda { @browser.select_list(:name, "new_user_country").option(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
@@ -76,38 +81,47 @@ describe Option do
76
81
  @browser.option(:text, "Denmark").select
77
82
  @browser.select_list(:name, "new_user_country").get_selected_items.should == ["Denmark"]
78
83
  end
84
+
79
85
  it "should should be able to select the chosen option (select_list context)" do
80
86
  @browser.select_list(:name, "new_user_country").clear_selection
81
87
  @browser.select_list(:name, "new_user_country").option(:text, "Denmark").select
82
88
  @browser.select_list(:name, "new_user_country").get_selected_items.should == ["Denmark"]
83
89
  end
90
+
84
91
  it "should select the option when found by text (page context)" do
85
92
  @browser.option(:text, 'Sweden').select
86
93
  @browser.option(:text, 'Sweden').should be_selected
87
94
  end
95
+
88
96
  it "should select the option when found by text (select_list context)" do
89
97
  @browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').select
90
98
  @browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').should be_selected
91
99
  end
100
+
92
101
  it "should fire onclick event (page context)" do
93
102
  @browser.option(:text, "Username 3").select
94
103
  @browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
95
104
  end
105
+
96
106
  it "should fire onclick event (select_list context)" do
97
107
  @browser.select_list(:id, 'delete_user_username').option(:text, "Username 3").select
98
108
  @browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
99
109
  end
110
+
100
111
  it "should raise UnknownObjectException if the option does not exist (page context)" do
101
112
  lambda { @browser.option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
102
113
  lambda { @browser.option(:text, /missing/).select }.should raise_error(UnknownObjectException)
103
114
  end
115
+
104
116
  it "should raise UnknownObjectException if the option does not exist (select_list context)" do
105
117
  lambda { @browser.select_list(:name, "new_user_country").option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
106
118
  lambda { @browser.select_list(:name, "new_user_country").option(:text, /missing/).select }.should raise_error(UnknownObjectException)
107
119
  end
120
+
108
121
  it "should raise MissingWayOfFindingObjectException when given a bad 'how' (page context)" do
109
122
  lambda { @browser.option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
110
123
  end
124
+
111
125
  it "should raise MissingWayOfFindingObjectException when given a bad 'how' (select_list context)" do
112
126
  lambda { @browser.select_list(:name, "new_user_country").option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
113
127
  end
@@ -117,10 +131,21 @@ describe Option do
117
131
  it "should be able to get attributes (page context)" do
118
132
  @browser.option(:text, 'Sweden').class_name.should == "scandinavia"
119
133
  end
134
+
120
135
  it "should be able to get attributes (select_list context)" do
121
136
  @browser.select_list(:name, "new_user_country").option(:text , 'Sweden').class_name.should == "scandinavia"
122
137
  end
123
138
  end
139
+
140
+ describe "#respond_to?" do
141
+ it "should return true for all attribute methods" do
142
+ @browser.option(:index, 1).should respond_to(:class_name)
143
+ @browser.option(:index, 1).should respond_to(:id)
144
+ @browser.option(:index, 1).should respond_to(:text)
145
+ @browser.option(:index, 1).should respond_to(:name)
146
+ end
147
+ end
148
+
124
149
 
125
150
  after :all do
126
151
  @browser.close