celerity 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +15 -1
- data/Manifest.txt +174 -0
- data/README.txt +19 -10
- data/config/hoe.rb +68 -0
- data/config/requirements.rb +15 -0
- data/lib/celerity.rb +14 -11
- data/lib/celerity/collections.rb +37 -8
- data/lib/celerity/container.rb +100 -3
- data/lib/celerity/disabled_element.rb +4 -2
- data/lib/celerity/element.rb +21 -8
- data/lib/celerity/element_collections.rb +4 -7
- data/lib/celerity/element_locator.rb +1 -0
- data/lib/celerity/elements/button.rb +6 -2
- data/lib/celerity/elements/file_field.rb +1 -1
- data/lib/celerity/elements/form.rb +1 -2
- data/lib/celerity/elements/frame.rb +0 -3
- data/lib/celerity/elements/image.rb +1 -4
- data/lib/celerity/elements/label.rb +1 -0
- data/lib/celerity/elements/link.rb +2 -0
- data/lib/celerity/elements/option.rb +1 -0
- data/lib/celerity/elements/radio_check.rb +3 -5
- data/lib/celerity/elements/select_list.rb +3 -10
- data/lib/celerity/elements/table.rb +8 -22
- data/lib/celerity/elements/table_body.rb +5 -11
- data/lib/celerity/elements/table_cell.rb +1 -0
- data/lib/celerity/elements/table_footer.rb +30 -0
- data/lib/celerity/elements/table_header.rb +30 -0
- data/lib/celerity/elements/table_row.rb +5 -3
- data/lib/celerity/elements/text_field.rb +18 -13
- data/lib/celerity/exception.rb +8 -8
- data/lib/celerity/extra/method_generator.rb +5 -2
- data/lib/celerity/htmlunit/htmlunit-2.2-SNAPSHOT.jar +0 -0
- data/lib/celerity/ie.rb +195 -141
- data/lib/celerity/non_control_elements.rb +30 -4
- data/lib/celerity/version.rb +1 -1
- data/lib/celerity/watir_compatibility.rb +62 -0
- data/setup.rb +0 -2
- data/spec/area_spec.rb +4 -1
- data/spec/areas_spec.rb +1 -1
- data/spec/button_spec.rb +35 -17
- data/spec/buttons_spec.rb +1 -1
- data/spec/checkbox_spec.rb +6 -4
- data/spec/checkboxes_spec.rb +1 -1
- data/spec/div_spec.rb +20 -19
- data/spec/divs_spec.rb +2 -2
- data/spec/element_spec.rb +13 -2
- data/spec/filefield_spec.rb +6 -3
- data/spec/filefields_spec.rb +1 -1
- data/spec/form_spec.rb +4 -1
- data/spec/forms_spec.rb +1 -1
- data/spec/frame_spec.rb +6 -2
- data/spec/hidden_spec.rb +8 -4
- data/spec/hiddens_spec.rb +1 -1
- data/spec/hn_spec.rb +86 -0
- data/spec/hns_spec.rb +41 -0
- data/spec/html/bug_duplicate_attributes.html +14 -0
- data/spec/html/bug_javascript_001.html +11 -0
- data/spec/html/forms_with_input_elements.html +11 -11
- data/spec/html/images.html +18 -15
- data/spec/html/latin1_text.html +16 -0
- data/spec/html/non_control_elements.html +28 -4
- data/spec/html/tables.html +3 -3
- data/spec/html/utf8_text.html +15 -0
- data/spec/htmlunit_spec.rb +27 -0
- data/spec/ie_spec.rb +47 -12
- data/spec/image_spec.rb +4 -7
- data/spec/images_spec.rb +3 -2
- data/spec/label_spec.rb +4 -3
- data/spec/labels_spec.rb +1 -1
- data/spec/li_spec.rb +11 -8
- data/spec/link_spec.rb +5 -1
- data/spec/links_spec.rb +2 -1
- data/spec/lis_spec.rb +3 -2
- data/spec/map_spec.rb +4 -1
- data/spec/maps_spec.rb +1 -1
- data/spec/meta_spec.rb +6 -0
- data/spec/ol_spec.rb +73 -0
- data/spec/ols_spec.rb +41 -0
- data/spec/option_spec.rb +129 -0
- data/spec/p_spec.rb +4 -1
- data/spec/pre_spec.rb +4 -1
- data/spec/pres_spec.rb +1 -1
- data/spec/ps_spec.rb +2 -1
- data/spec/radio_spec.rb +7 -19
- data/spec/radios_spec.rb +1 -1
- data/spec/select_list_spec.rb +19 -57
- data/spec/select_lists_spec.rb +3 -2
- data/spec/span_spec.rb +8 -5
- data/spec/spans_spec.rb +2 -1
- data/spec/spec_helper.rb +8 -43
- data/spec/table_bodies_spec.rb +17 -4
- data/spec/table_body_spec.rb +47 -16
- data/spec/table_cell_spec.rb +5 -3
- data/spec/table_cells_spec.rb +1 -1
- data/spec/table_footer_spec.rb +94 -0
- data/spec/table_footers_spec.rb +53 -0
- data/spec/table_header_spec.rb +94 -0
- data/spec/table_headers_spec.rb +53 -0
- data/spec/table_row_spec.rb +25 -4
- data/spec/table_rows_spec.rb +1 -1
- data/spec/table_spec.rb +22 -2
- data/spec/tables_spec.rb +2 -1
- data/spec/text_field_spec.rb +52 -20
- data/spec/text_fields_spec.rb +1 -1
- data/spec/ul_spec.rb +73 -0
- data/spec/uls_spec.rb +41 -0
- data/spec/watir_compatability_spec.rb +253 -0
- data/support/celerity_viewer/rubycocoa/CelerityViewer.icns +0 -0
- data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/classes.nib +37 -0
- data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/info.nib +19 -0
- data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/keyedobjects.nib +0 -0
- data/support/celerity_viewer/rubycocoa/Info.plist.erb +28 -0
- data/support/celerity_viewer/rubycocoa/MainController.rb +23 -0
- data/support/celerity_viewer/rubycocoa/README +94 -0
- data/support/celerity_viewer/rubycocoa/Rakefile +100 -0
- data/support/celerity_viewer/rubycocoa/distributed_viewer.rb +86 -0
- data/support/celerity_viewer/rubycocoa/main.m +7 -0
- data/support/celerity_viewer/rubycocoa/main.rb +27 -0
- data/support/spec_server.rb +64 -0
- data/tasks/benchmark.rake +1 -0
- data/tasks/rdoc.rake +4 -0
- data/tasks/rspec.rake +10 -3
- data/tasks/simple_ci.rake +94 -0
- data/tasks/specserver.rake +21 -0
- metadata +160 -114
- data/spec/table_bodies.rb +0 -40
- data/tasks/testserver.rake +0 -32
data/spec/ols_spec.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe Ols do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@browser = IE.new
|
7
|
+
add_spec_checker(@browser)
|
8
|
+
end
|
9
|
+
|
10
|
+
before :each do
|
11
|
+
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#length" do
|
15
|
+
it "should return the number of ols" do
|
16
|
+
@browser.ols.length.should == 2
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#[]" do
|
21
|
+
it "should return the ol at the given index" do
|
22
|
+
@browser.ols[1].id.should == "favorite_compounds"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#each" do
|
27
|
+
it "should iterate through ols correctly" do
|
28
|
+
@browser.ols.each_with_index do |ul, index|
|
29
|
+
ul.name.should == @browser.ol(:index, index+1).name
|
30
|
+
ul.id.should == @browser.ol(:index, index+1).id
|
31
|
+
ul.value.should == @browser.ol(:index, index+1).value
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
after :all do
|
37
|
+
@browser.close
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
data/spec/option_spec.rb
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe Option do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@browser = Celerity::IE.new
|
7
|
+
add_spec_checker(@browser)
|
8
|
+
end
|
9
|
+
|
10
|
+
before :each do
|
11
|
+
@browser.goto(TEST_HOST + "/forms_with_input_elements.html")
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#exists?" do
|
15
|
+
it "should return true if the element exists (page context)" do
|
16
|
+
@browser.option(:id, "nor").should exist
|
17
|
+
@browser.option(:id, /nor/).should exist
|
18
|
+
@browser.option(:value, "2").should exist
|
19
|
+
@browser.option(:value, /2/).should exist
|
20
|
+
@browser.option(:text, "Norway").should exist
|
21
|
+
@browser.option(:text, /Norway/).should exist
|
22
|
+
@browser.option(:class, "scandinavia").should exist
|
23
|
+
@browser.option(:index, 2).should exist
|
24
|
+
@browser.option(:xpath, "//option[@id='nor']").should exist
|
25
|
+
end
|
26
|
+
it "should return true if the element exists (select_list context)" do
|
27
|
+
@browser.select_list(:name, "new_user_country").option(:id, "nor").should exist
|
28
|
+
@browser.select_list(:name, "new_user_country").option(:id, /nor/).should exist
|
29
|
+
@browser.select_list(:name, "new_user_country").option(:value, "2").should exist
|
30
|
+
@browser.select_list(:name, "new_user_country").option(:value, /2/).should exist
|
31
|
+
@browser.select_list(:name, "new_user_country").option(:text, "Norway").should exist
|
32
|
+
@browser.select_list(:name, "new_user_country").option(:text, /Norway/).should exist
|
33
|
+
@browser.select_list(:name, "new_user_country").option(:class, "scandinavia").should exist
|
34
|
+
@browser.select_list(:name, "new_user_country").option(:index, 2).should exist
|
35
|
+
@browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='nor']").should exist
|
36
|
+
end
|
37
|
+
it "should return true if the element exists (default how = :text)" do
|
38
|
+
@browser.option("Swedish").should exist
|
39
|
+
@browser.select_list(:name, "new_user_languages").option("Swedish").should exist
|
40
|
+
end
|
41
|
+
it "should return false if the element does not exist (page context)" do
|
42
|
+
@browser.option(:id, "no_such_id").should_not exist
|
43
|
+
@browser.option(:id, /no_such_id/).should_not exist
|
44
|
+
@browser.option(:value, "no_such_value").should_not exist
|
45
|
+
@browser.option(:value, /no_such_value/).should_not exist
|
46
|
+
@browser.option(:text, "no_such_text").should_not exist
|
47
|
+
@browser.option(:text, /no_such_text/).should_not exist
|
48
|
+
@browser.option(:class, "no_such_class").should_not exist
|
49
|
+
@browser.option(:index, 1337).should_not exist
|
50
|
+
@browser.option(:xpath, "//option[@id='no_such_id']").should_not exist
|
51
|
+
end
|
52
|
+
it "should return false if the element does not exist (select_list context)" do
|
53
|
+
@browser.select_list(:name, "new_user_country").option(:id, "no_such_id").should_not exist
|
54
|
+
@browser.select_list(:name, "new_user_country").option(:id, /no_such_id/).should_not exist
|
55
|
+
@browser.select_list(:name, "new_user_country").option(:value, "no_such_value").should_not exist
|
56
|
+
@browser.select_list(:name, "new_user_country").option(:value, /no_such_value/).should_not exist
|
57
|
+
@browser.select_list(:name, "new_user_country").option(:text, "no_such_text").should_not exist
|
58
|
+
@browser.select_list(:name, "new_user_country").option(:text, /no_such_text/).should_not exist
|
59
|
+
@browser.select_list(:name, "new_user_country").option(:class, "no_such_class").should_not exist
|
60
|
+
@browser.select_list(:name, "new_user_country").option(:index, 1337).should_not exist
|
61
|
+
@browser.select_list(:name, "new_user_country").option(:xpath, "//option[@id='no_such_id']").should_not exist
|
62
|
+
end
|
63
|
+
it "should raise ArgumentError when 'what' argument is invalid" do
|
64
|
+
lambda { @browser.option(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
65
|
+
lambda { @browser.select_list(:name, "new_user_country").option(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
66
|
+
end
|
67
|
+
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
68
|
+
lambda { @browser.option(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
69
|
+
lambda { @browser.select_list(:name, "new_user_country").option(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "#select" do
|
74
|
+
it "should should be able to select the chosen option (page context)" do
|
75
|
+
@browser.select_list(:name, "new_user_country").clear_selection
|
76
|
+
@browser.option(:text, "Denmark").select
|
77
|
+
@browser.select_list(:name, "new_user_country").get_selected_items.should == ["Denmark"]
|
78
|
+
end
|
79
|
+
it "should should be able to select the chosen option (select_list context)" do
|
80
|
+
@browser.select_list(:name, "new_user_country").clear_selection
|
81
|
+
@browser.select_list(:name, "new_user_country").option(:text, "Denmark").select
|
82
|
+
@browser.select_list(:name, "new_user_country").get_selected_items.should == ["Denmark"]
|
83
|
+
end
|
84
|
+
it "should select the option when found by text (page context)" do
|
85
|
+
@browser.option(:text, 'Sweden').select
|
86
|
+
@browser.option(:text, 'Sweden').should be_selected
|
87
|
+
end
|
88
|
+
it "should select the option when found by text (select_list context)" do
|
89
|
+
@browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').select
|
90
|
+
@browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').should be_selected
|
91
|
+
end
|
92
|
+
it "should fire onclick event (page context)" do
|
93
|
+
@browser.option(:text, "Username 3").select
|
94
|
+
@browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
|
95
|
+
end
|
96
|
+
it "should fire onclick event (select_list context)" do
|
97
|
+
@browser.select_list(:id, 'delete_user_username').option(:text, "Username 3").select
|
98
|
+
@browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
|
99
|
+
end
|
100
|
+
it "should raise UnknownObjectException if the option does not exist (page context)" do
|
101
|
+
lambda { @browser.option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
|
102
|
+
lambda { @browser.option(:text, /missing/).select }.should raise_error(UnknownObjectException)
|
103
|
+
end
|
104
|
+
it "should raise UnknownObjectException if the option does not exist (select_list context)" do
|
105
|
+
lambda { @browser.select_list(:name, "new_user_country").option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
|
106
|
+
lambda { @browser.select_list(:name, "new_user_country").option(:text, /missing/).select }.should raise_error(UnknownObjectException)
|
107
|
+
end
|
108
|
+
it "should raise MissingWayOfFindingObjectException when given a bad 'how' (page context)" do
|
109
|
+
lambda { @browser.option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
|
110
|
+
end
|
111
|
+
it "should raise MissingWayOfFindingObjectException when given a bad 'how' (select_list context)" do
|
112
|
+
lambda { @browser.select_list(:name, "new_user_country").option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "#class_name" do
|
117
|
+
it "should be able to get attributes (page context)" do
|
118
|
+
@browser.option(:text, 'Sweden').class_name.should == "scandinavia"
|
119
|
+
end
|
120
|
+
it "should be able to get attributes (select_list context)" do
|
121
|
+
@browser.select_list(:name, "new_user_country").option(:text , 'Sweden').class_name.should == "scandinavia"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
after :all do
|
126
|
+
@browser.close
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
data/spec/p_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe P do
|
4
4
|
|
5
5
|
before :all do
|
6
6
|
@browser = IE.new
|
@@ -23,6 +23,9 @@ describe "P" do
|
|
23
23
|
@browser.p(:index, 1).should exist
|
24
24
|
@browser.p(:xpath, "//p[@id='lead']").should exist
|
25
25
|
end
|
26
|
+
it "should return true if the element exists (default how = :id)" do
|
27
|
+
@browser.p("lead").should exist
|
28
|
+
end
|
26
29
|
it "should return false if the 'p' doesn't exist" do
|
27
30
|
@browser.p(:id, "no_such_id").should_not exist
|
28
31
|
@browser.p(:id, /no_such_id/).should_not exist
|
data/spec/pre_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe Pre do
|
4
4
|
|
5
5
|
before :all do
|
6
6
|
@browser = IE.new
|
@@ -23,6 +23,9 @@ describe "Pre" do
|
|
23
23
|
@browser.pre(:index, 1).should exist
|
24
24
|
@browser.pre(:xpath, "//pre[@id='rspec']").should exist
|
25
25
|
end
|
26
|
+
it "should return true if the element exists (default how = :id)" do
|
27
|
+
@browser.pre("rspec").should exist
|
28
|
+
end
|
26
29
|
it "should return false if the 'p' doesn't exist" do
|
27
30
|
@browser.pre(:id, "no_such_id").should_not exist
|
28
31
|
@browser.pre(:id, /no_such_id/).should_not exist
|
data/spec/pres_spec.rb
CHANGED
data/spec/ps_spec.rb
CHANGED
data/spec/radio_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe Radio do
|
4
4
|
|
5
5
|
before :all do
|
6
6
|
@browser = IE.new
|
@@ -10,10 +10,8 @@ describe "Radio" do
|
|
10
10
|
before :each do
|
11
11
|
@browser.goto(TEST_HOST + "/forms_with_input_elements.html")
|
12
12
|
end
|
13
|
-
|
14
13
|
|
15
14
|
# Exists method
|
16
|
-
|
17
15
|
describe "#exists?" do
|
18
16
|
it "should return true if the radio button exists" do
|
19
17
|
@browser.radio(:id, "new_user_newsletter_yes").should exist
|
@@ -25,18 +23,18 @@ describe "Radio" do
|
|
25
23
|
# TODO: figure out what :text means for a radio button
|
26
24
|
# @browser.radio(:text, "yes").should exist
|
27
25
|
# @browser.radio(:text, /yes/).should exist
|
28
|
-
|
29
26
|
@browser.radio(:class, "huge").should exist
|
30
27
|
@browser.radio(:class, /huge/).should exist
|
31
28
|
@browser.radio(:index, 1).should exist
|
32
29
|
@browser.radio(:xpath, "//input[@id='new_user_newsletter_yes']").should exist
|
33
30
|
end
|
34
|
-
|
31
|
+
it "should return true if the element exists (default how = :name)" do
|
32
|
+
@browser.radio("new_user_newsletter").should exist
|
33
|
+
end
|
35
34
|
it "should return true if the radio button exists (search by name and value)" do
|
36
35
|
@browser.radio(:name, "new_user_newsletter", 'yes').should exist
|
37
36
|
@browser.radio(:xpath, "//input[@name='new_user_newsletter' and @value='yes']").set
|
38
37
|
end
|
39
|
-
|
40
38
|
it "should return false if the radio button does not exist" do
|
41
39
|
@browser.radio(:id, "no_such_id").should_not exist
|
42
40
|
@browser.radio(:id, /no_such_id/).should_not exist
|
@@ -51,23 +49,19 @@ describe "Radio" do
|
|
51
49
|
@browser.radio(:index, 1337).should_not exist
|
52
50
|
@browser.radio(:xpath, "input[@id='no_such_id']").should_not exist
|
53
51
|
end
|
54
|
-
|
55
52
|
it "should return false if the radio button does not exist (search by name and value)" do
|
56
53
|
@browser.radio(:name, "new_user_newsletter", 'no_such_value').should_not exist
|
57
54
|
@browser.radio(:xpath, "//input[@name='new_user_newsletter' and @value='no_such_value']").should_not exist
|
58
55
|
@browser.radio(:name, "no_such_name", 'yes').should_not exist
|
59
56
|
@browser.radio(:xpath, "//input[@name='no_such_name' and @value='yes']").should_not exist
|
60
57
|
end
|
61
|
-
|
62
58
|
it "should return true for radios with a string value" do
|
63
59
|
@browser.radio(:name, 'new_user_newsletter', 'yes').should exist
|
64
60
|
@browser.radio(:name, 'new_user_newsletter', 'no').should exist
|
65
61
|
end
|
66
|
-
|
67
62
|
it "should raise ArgumentError when 'what' argument is invalid" do
|
68
63
|
lambda { @browser.radio(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
69
64
|
end
|
70
|
-
|
71
65
|
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
72
66
|
lambda { @browser.radio(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
73
67
|
end
|
@@ -75,7 +69,6 @@ describe "Radio" do
|
|
75
69
|
|
76
70
|
|
77
71
|
# Attribute methods
|
78
|
-
|
79
72
|
describe "#class_name" do
|
80
73
|
it "should return the class name if the radio exists and has an attribute" do
|
81
74
|
@browser.radio(:id, "new_user_newsletter_yes").class_name.should == "huge"
|
@@ -144,7 +137,6 @@ describe "Radio" do
|
|
144
137
|
|
145
138
|
|
146
139
|
# Access methods
|
147
|
-
|
148
140
|
describe "#enabled?" do
|
149
141
|
it "should return true if the radio button is enabled" do
|
150
142
|
@browser.radio(:id, "new_user_newsletter_yes").should be_enabled
|
@@ -174,8 +166,7 @@ describe "Radio" do
|
|
174
166
|
|
175
167
|
|
176
168
|
# Manipulation methods
|
177
|
-
|
178
|
-
describe "clear" do
|
169
|
+
describe "#clear" do
|
179
170
|
it "should clear the radio button if it is set" do
|
180
171
|
@browser.radio(:id, "new_user_newsletter_yes").clear
|
181
172
|
@browser.radio(:id, "new_user_newsletter_yes").should_not be_set
|
@@ -204,7 +195,6 @@ describe "Radio" do
|
|
204
195
|
@browser.radio(:xpath, "//input[@id='new_user_newsletter_no']").set
|
205
196
|
@browser.radio(:xpath, "//input[@id='new_user_newsletter_no']").should be_set
|
206
197
|
end
|
207
|
-
|
208
198
|
it "should fire the onclick event" do
|
209
199
|
@browser.div(:id, "wants_newsletter").text.should be_empty
|
210
200
|
@browser.radio(:id, "new_user_newsletter_no").set
|
@@ -212,7 +202,6 @@ describe "Radio" do
|
|
212
202
|
@browser.radio(:id, "new_user_newsletter_yes").set
|
213
203
|
@browser.div(:id, "wants_newsletter").text.should be_empty
|
214
204
|
end
|
215
|
-
|
216
205
|
it "should raise UnknownObjectException if the radio button doesn't exist" do
|
217
206
|
lambda { @browser.radio(:name, "no_such_name").set }.should raise_error(UnknownObjectException)
|
218
207
|
lambda { @browser.radio(:xpath, "//input[@name='no_such_name']").set }.should raise_error(UnknownObjectException)
|
@@ -225,7 +214,6 @@ describe "Radio" do
|
|
225
214
|
|
226
215
|
|
227
216
|
# Other
|
228
|
-
|
229
217
|
describe '#set?' do
|
230
218
|
it "should return true if the radio button is set" do
|
231
219
|
@browser.radio(:id, "new_user_newsletter_yes").should be_set
|
@@ -254,8 +242,8 @@ describe "Radio" do
|
|
254
242
|
@browser.radio(:id, "new_user_newsletter_no").get_state.should be_false
|
255
243
|
end
|
256
244
|
it "should raise UnknownObjectException if the radio doesn't exist" do
|
257
|
-
lambda {
|
258
|
-
lambda {
|
245
|
+
lambda { @browser.radio(:name, "no_such_name").get_state }.should raise_error(UnknownObjectException)
|
246
|
+
lambda { @browser.radio(:xpath, "//input[@name='no_such_name']").get_state }.should raise_error(UnknownObjectException)
|
259
247
|
end
|
260
248
|
end
|
261
249
|
|
data/spec/radios_spec.rb
CHANGED
data/spec/select_list_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe SelectList do
|
4
|
+
|
4
5
|
before :all do
|
5
6
|
@browser = Celerity::IE.new
|
6
7
|
add_spec_checker(@browser)
|
@@ -10,28 +11,26 @@ describe "SelectList" do
|
|
10
11
|
@browser.goto(TEST_HOST + "/forms_with_input_elements.html")
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
14
|
# Exists method
|
15
|
-
|
16
15
|
describe "#exists?" do
|
17
16
|
it "should return true if the select list exists" do
|
18
17
|
@browser.select_list(:id, 'new_user_country').should exist
|
19
18
|
@browser.select_list(:id, /new_user_country/).should exist
|
20
19
|
@browser.select_list(:name, 'new_user_country').should exist
|
21
20
|
@browser.select_list(:name, /new_user_country/).should exist
|
22
|
-
|
23
|
-
# check behaviour in Watir
|
21
|
+
# TODO: check behaviour in Watir
|
24
22
|
# @browser.select_list(:value, 'Norway').should exist
|
25
23
|
# @browser.select_list(:value, /Norway/).should exist
|
26
|
-
|
27
|
-
|
28
|
-
# @browser.select_list(:text, 'Norway').should exist
|
29
|
-
# @browser.select_list(:text, /Norway/).should exist
|
24
|
+
@browser.select_list(:text, 'Norway').should exist
|
25
|
+
@browser.select_list(:text, /Norway/).should exist
|
30
26
|
@browser.select_list(:class, 'country').should exist
|
31
27
|
@browser.select_list(:class, /country/).should exist
|
32
28
|
@browser.select_list(:index, 1).should exist
|
33
29
|
@browser.select_list(:xpath, "//select[@id='new_user_country']").should exist
|
34
30
|
end
|
31
|
+
it "should return true if the element exists (default how = :name)" do
|
32
|
+
@browser.select_list("new_user_country").should exist
|
33
|
+
end
|
35
34
|
it "should return false if the select list doesn't exist" do
|
36
35
|
@browser.select_list(:id, 'no_such_id').should_not exist
|
37
36
|
@browser.select_list(:id, /no_such_id/).should_not exist
|
@@ -46,11 +45,9 @@ describe "SelectList" do
|
|
46
45
|
@browser.select_list(:index, 1337).should_not exist
|
47
46
|
@browser.select_list(:xpath, "//select[@id='no_such_id']").should_not exist
|
48
47
|
end
|
49
|
-
|
50
48
|
it "should raise ArgumentError when 'what' argument is invalid" do
|
51
49
|
lambda { @browser.select_list(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
52
50
|
end
|
53
|
-
|
54
51
|
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
55
52
|
lambda { @browser.select_list(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
56
53
|
end
|
@@ -58,7 +55,6 @@ describe "SelectList" do
|
|
58
55
|
|
59
56
|
|
60
57
|
# Attribute methods
|
61
|
-
|
62
58
|
describe "#class_name" do
|
63
59
|
it "should return the class name of the select list" do
|
64
60
|
@browser.select_list(:name, 'new_user_country').class_name.should == 'country'
|
@@ -98,18 +94,16 @@ describe "SelectList" do
|
|
98
94
|
|
99
95
|
describe "#value" do
|
100
96
|
it "should return the value of the selected option" do
|
101
|
-
@browser.select_list(:index, 1).value.should == "
|
97
|
+
@browser.select_list(:index, 1).value.should == "2"
|
102
98
|
@browser.select_list(:index, 1).select(/Sweden/)
|
103
|
-
@browser.select_list(:index, 1).value.should == "
|
99
|
+
@browser.select_list(:index, 1).value.should == "3"
|
104
100
|
end
|
105
101
|
it "should raise UnknownObjectException if the select list doesn't exist" do
|
106
|
-
lambda { @browser.select_list(:index, 1337).value
|
102
|
+
lambda { @browser.select_list(:index, 1337).value }.should raise_error(UnknownObjectException)
|
107
103
|
end
|
108
104
|
end
|
109
|
-
|
110
105
|
|
111
106
|
# Access methods
|
112
|
-
|
113
107
|
describe "#enabled?" do
|
114
108
|
it "should return true if the select list is enabled" do
|
115
109
|
@browser.select_list(:name, 'new_user_country').should be_enabled
|
@@ -129,46 +123,20 @@ describe "SelectList" do
|
|
129
123
|
it "should return false if the select list is enabled" do
|
130
124
|
@browser.select_list(:index, 1).should_not be_disabled
|
131
125
|
end
|
132
|
-
|
133
126
|
it "should should raise UnknownObjectException when the select list does not exist" do
|
134
127
|
lambda { @browser.select_list(:index, 1337).disabled? }.should raise_error(UnknownObjectException)
|
135
128
|
end
|
136
129
|
end
|
137
130
|
|
138
|
-
|
139
131
|
# Other
|
140
|
-
|
141
132
|
describe "#option" do
|
142
133
|
it "should return an instance of Option" do
|
143
|
-
@browser.select_list(:name, "new_user_country").option(:text, "Denmark")
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
it "should should be able to select the chosen option" do
|
148
|
-
@browser.select_list(:name , "new_user_country").clear_selection
|
149
|
-
@browser.select_list(:name , "new_user_country").option(:text, "Denmark").select
|
150
|
-
@browser.select_list(:name, "new_user_country").get_selected_items.should == ["Denmark"]
|
151
|
-
end
|
152
|
-
|
153
|
-
it "should select the option when found by text" do
|
154
|
-
@browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').select
|
155
|
-
@browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').should be_selected
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should raise UnknownObjectException if the option does not exist" do
|
159
|
-
lambda { @browser.select_list(:name, "new_user_country").option(:text, "no_such_text").select }.should raise_error(UnknownObjectException)
|
160
|
-
lambda { @browser.select_list(:name, "new_user_country").option(:text, /missing/).select }.should raise_error(UnknownObjectException)
|
161
|
-
end
|
162
|
-
|
163
|
-
it "should raise MissingWayOfFindingObjectException when given a bad 'how'" do
|
164
|
-
lambda { @browser.select_list(:name, "new_user_country").option(:missing, "Denmark").select }.should raise_error(MissingWayOfFindingObjectException)
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should be able to get attributes" do
|
168
|
-
@browser.select_list(:name, "new_user_country").option(:text , 'Sweden').class_name.should == "scandinavia"
|
169
|
-
end
|
134
|
+
option = @browser.select_list(:name, "new_user_country").option(:text, "Denmark")
|
135
|
+
option.should be_instance_of(Option)
|
136
|
+
option.value.should == "1"
|
137
|
+
end
|
170
138
|
end
|
171
|
-
|
139
|
+
|
172
140
|
describe "#get_all_contents" do
|
173
141
|
it "should should raise UnknownObjectException if the select list doesn't exist" do
|
174
142
|
lambda { @browser.select_list(:name, 'no_such_name').get_all_contents }.should raise_error(UnknownObjectException)
|
@@ -182,7 +150,6 @@ describe "SelectList" do
|
|
182
150
|
it "should should raise UnknownObjectException if the select list doesn't exist" do
|
183
151
|
lambda { @browser.select_list(:name, 'no_such_name').get_selected_items }.should raise_error(UnknownObjectException)
|
184
152
|
end
|
185
|
-
|
186
153
|
it "should get the currently selected item(s)" do
|
187
154
|
@browser.select_list(:name, "new_user_country").get_selected_items.should == ["Norway"]
|
188
155
|
@browser.select_list(:name, "new_user_languages").get_selected_items.should == ["English", "Norwegian"]
|
@@ -251,27 +218,23 @@ describe "SelectList" do
|
|
251
218
|
end
|
252
219
|
it "should be able to select multiple items using :xpath" do
|
253
220
|
@browser.select_list(:xpath, "//select[@name='new_user_languages']").clear_selection
|
254
|
-
@browser.select_list(:xpath, "//select[@name='new_user_languages']").select(
|
221
|
+
@browser.select_list(:xpath, "//select[@name='new_user_languages']").select(/ish/)
|
255
222
|
@browser.select_list(:xpath, "//select[@name='new_user_languages']").get_selected_items.should == ["Danish", "English", "Swedish"]
|
256
223
|
end
|
257
|
-
|
258
224
|
it "should fire onchange event when selecting an item" do
|
259
225
|
@browser.div(:id, "changed_language").text.should be_empty
|
260
226
|
@browser.select_list(:id, "new_user_languages").select("Danish")
|
261
227
|
@browser.div(:id, "changed_language").text.should == "changed language"
|
262
228
|
@browser.refresh # to reset js
|
263
229
|
end
|
264
|
-
|
265
230
|
it "should not fire onchange event when selecting an already selected item" do
|
266
|
-
@browser.select_list(:id, "new_user_languages").clear_selection # removes two options
|
231
|
+
@browser.select_list(:id, "new_user_languages").clear_selection # removes the two pre-selected options
|
267
232
|
@browser.div(:id, "changed_language").text.should == "changed languagechanged language"
|
268
233
|
@browser.select_list(:id, "new_user_languages").select("English")
|
269
234
|
@browser.div(:id, "changed_language").text.should == "changed languagechanged languagechanged language"
|
270
|
-
|
271
235
|
@browser.select_list(:id, "new_user_languages").select("English")
|
272
236
|
@browser.div(:id, "changed_language").text.should == "changed languagechanged languagechanged language"
|
273
237
|
end
|
274
|
-
|
275
238
|
it "should raise NoValueFoundException if the option doesn't exist" do
|
276
239
|
lambda { @browser.select_list(:name, "new_user_country").select("missing_option") }.should raise_error(NoValueFoundException)
|
277
240
|
lambda { @browser.select_list(:name, "new_user_country").select(/missing_option/) }.should raise_error(NoValueFoundException)
|
@@ -294,5 +257,4 @@ describe "SelectList" do
|
|
294
257
|
@browser.close
|
295
258
|
end
|
296
259
|
|
297
|
-
end
|
298
|
-
|
260
|
+
end
|