celerity 0.0.2 → 0.0.3
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.
- 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
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe TableHeader do
|
|
4
|
+
|
|
5
|
+
before :all do
|
|
6
|
+
@browser = IE.new
|
|
7
|
+
add_spec_checker(@browser)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before :each do
|
|
11
|
+
@browser = IE.new
|
|
12
|
+
@browser.goto(TEST_HOST + "/tables.html")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#exists" do
|
|
16
|
+
it "should return true if the table theader exists (page context)" do
|
|
17
|
+
@browser.thead(:id, 'tax_headers').should exist
|
|
18
|
+
@browser.thead(:id, /tax_headers/).should exist
|
|
19
|
+
@browser.thead(:index, 1).should exist
|
|
20
|
+
@browser.thead(:xpath, "//thead[@id='tax_headers']").should exist
|
|
21
|
+
end
|
|
22
|
+
it "should return true if the table theader exists (table context)" do
|
|
23
|
+
@browser.table(:index, 1).thead(:id, 'tax_headers').should exist
|
|
24
|
+
@browser.table(:index, 1).thead(:id, /tax_headers/).should exist
|
|
25
|
+
@browser.table(:index, 1).thead(:index, 1).should exist
|
|
26
|
+
@browser.table(:index, 1).thead(:xpath, "//thead[@id='tax_headers']").should exist
|
|
27
|
+
end
|
|
28
|
+
it "should return true if the element exists (default how = :id)" do
|
|
29
|
+
@browser.thead("tax_headers").should exist
|
|
30
|
+
@browser.table(:index, 1).thead("tax_headers").should exist
|
|
31
|
+
end
|
|
32
|
+
it "should return false if the table theader exists (page context)" do
|
|
33
|
+
@browser.thead(:id, 'no_such_id').should_not exist
|
|
34
|
+
@browser.thead(:id, /no_such_id/).should_not exist
|
|
35
|
+
@browser.thead(:index, 1337).should_not exist
|
|
36
|
+
@browser.thead(:xpath, "//thead[@id='no_such_id']").should_not exist
|
|
37
|
+
end
|
|
38
|
+
it "should return false if the table theader exists (table context)" do
|
|
39
|
+
@browser.table(:index, 1).thead(:id, 'no_such_id').should_not exist
|
|
40
|
+
@browser.table(:index, 1).thead(:id, /no_such_id/).should_not exist
|
|
41
|
+
@browser.table(:index, 1).thead(:index, 1337).should_not exist
|
|
42
|
+
@browser.table(:index, 1).thead(:xpath, "//thead[@id='no_such_id']").should_not exist
|
|
43
|
+
end
|
|
44
|
+
it "should raise ArgumentError when 'what' argument is invalid" do
|
|
45
|
+
lambda { @browser.thead(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
|
46
|
+
lambda { @browser.table(:index, 1).thead(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
|
47
|
+
end
|
|
48
|
+
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
|
49
|
+
lambda { @browser.thead(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
|
50
|
+
lambda { @browser.table(:index, 1).thead(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "#length" do
|
|
55
|
+
it "should return the correct number of table bodies (page context)" do
|
|
56
|
+
@browser.thead(:id, 'tax_headers').length.should == 1
|
|
57
|
+
end
|
|
58
|
+
it "should return the correct number of table bodies (table context)" do
|
|
59
|
+
@browser.table(:index, 1).thead(:id, 'tax_headers').length.should == 1
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "#[]" do
|
|
64
|
+
it "should return the row at the given index (page context)" do
|
|
65
|
+
@browser.thead(:id, 'tax_headers')[1].text.should == 'Before income tax Income tax After income tax'
|
|
66
|
+
@browser.thead(:id, 'tax_headers')[1][2].text.should == 'Before income tax'
|
|
67
|
+
@browser.thead(:id, 'tax_headers')[1][3].text.should == 'Income tax'
|
|
68
|
+
end
|
|
69
|
+
it "should return the row at the given index (table context)" do
|
|
70
|
+
@browser.table(:index, 1).thead(:id, 'tax_headers')[1].text.should == 'Before income tax Income tax After income tax'
|
|
71
|
+
@browser.table(:index, 1).thead(:id, 'tax_headers')[1][2].text.should == 'Before income tax'
|
|
72
|
+
@browser.table(:index, 1).thead(:id, 'tax_headers')[1][3].text.should == 'Income tax'
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "#each" do
|
|
77
|
+
it "should iterate through rows correctly" do
|
|
78
|
+
theader = @browser.table(:index, 1).thead(:id, 'tax_headers')
|
|
79
|
+
index = 1
|
|
80
|
+
theader.each do |r|
|
|
81
|
+
r.name.should == @browser.row(:index, index).name
|
|
82
|
+
r.id.should == @browser.row(:index, index).id
|
|
83
|
+
r.value.should == @browser.row(:index, index).value
|
|
84
|
+
index += 1
|
|
85
|
+
end
|
|
86
|
+
index.should_not == 1
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
after :all do
|
|
91
|
+
@browser.close
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe TableHeaders do
|
|
4
|
+
|
|
5
|
+
before :all do
|
|
6
|
+
@browser = IE.new
|
|
7
|
+
add_spec_checker(@browser)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before :each do
|
|
11
|
+
@browser = IE.new
|
|
12
|
+
@browser.goto(TEST_HOST + "/tables.html")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#length" do
|
|
16
|
+
it "should return the correct number of table theads (page context)" do
|
|
17
|
+
@browser.theads.length.should == 1
|
|
18
|
+
end
|
|
19
|
+
it "should return the correct number of table theads (table context)" do
|
|
20
|
+
@browser.table(:index, 1).theads.length.should == 1
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe "#[]" do
|
|
25
|
+
it "should return the row at the given index (page context)" do
|
|
26
|
+
@browser.theads[1].id.should == "tax_headers"
|
|
27
|
+
end
|
|
28
|
+
it "should return the row at the given index (table context)" do
|
|
29
|
+
@browser.table(:index, 1).theads[1].id.should == "tax_headers"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "#each" do
|
|
34
|
+
it "should iterate through table theads correctly (page context)" do
|
|
35
|
+
@browser.theads.each_with_index do |thead, index|
|
|
36
|
+
thead.name.should == @browser.thead(:index, index+1).name
|
|
37
|
+
thead.id.should == @browser.thead(:index, index+1).id
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
it "should iterate through table theads correctly (table context)" do
|
|
41
|
+
table = @browser.table(:index, 1)
|
|
42
|
+
table.theads.each_with_index do |thead, index|
|
|
43
|
+
thead.name.should == table.thead(:index, index+1).name
|
|
44
|
+
thead.id.should == table.thead(:index, index+1).id
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
after :all do
|
|
50
|
+
@browser.close
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
data/spec/table_row_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe TableRow do
|
|
4
4
|
|
|
5
5
|
before :all do
|
|
6
6
|
@browser = IE.new
|
|
@@ -12,6 +12,27 @@ describe "TableRow" do
|
|
|
12
12
|
@browser.goto(TEST_HOST + "/tables.html")
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
describe "#exists?" do
|
|
16
|
+
it "should return true if the table row exists" do
|
|
17
|
+
@browser.row(:id, "outer_first").should exist
|
|
18
|
+
@browser.row(:id, /outer_first/).should exist
|
|
19
|
+
@browser.row(:index, 1).should exist
|
|
20
|
+
@browser.row(:xpath, "//tr[@id='outer_first']")
|
|
21
|
+
end
|
|
22
|
+
it "should return true if the element exists (default how = :id)" do
|
|
23
|
+
@browser.row("outer_last").should exist
|
|
24
|
+
end
|
|
25
|
+
it "should return false if the table row exists" do
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
it "should raise ArgumentError when 'what' argument is invalid" do
|
|
29
|
+
lambda { @browser.row(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
|
30
|
+
end
|
|
31
|
+
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
|
32
|
+
lambda { @browser.row(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
15
36
|
describe "#column_count" do
|
|
16
37
|
it "should return the number of columns (cells) in the row" do
|
|
17
38
|
@browser.table(:id, 'outer').rows[1].column_count.should == 2
|
|
@@ -29,8 +50,8 @@ describe "TableRow" do
|
|
|
29
50
|
end
|
|
30
51
|
end
|
|
31
52
|
|
|
32
|
-
describe "#[]
|
|
33
|
-
it "should " do
|
|
53
|
+
describe "#[]" do
|
|
54
|
+
it "should " do # FIXME: description
|
|
34
55
|
@browser.table(:id, 'outer').row(:index, 1)[1].text.should == "Table 1, Row 1, Cell 1"
|
|
35
56
|
@browser.table(:id, 'outer')[1][1].text.should == "Table 1, Row 1, Cell 1"
|
|
36
57
|
@browser.table(:id, 'outer')[3][1].text.should == "Table 1, Row 3, Cell 1"
|
|
@@ -38,7 +59,7 @@ describe "TableRow" do
|
|
|
38
59
|
end
|
|
39
60
|
|
|
40
61
|
describe "#each" do
|
|
41
|
-
it "should " do
|
|
62
|
+
it "should " do # FIXME: description
|
|
42
63
|
index = 1
|
|
43
64
|
@browser.table(:id, 'outer')[2].each do |c|
|
|
44
65
|
case index
|
data/spec/table_rows_spec.rb
CHANGED
data/spec/table_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe Table do
|
|
4
4
|
|
|
5
5
|
before :all do
|
|
6
6
|
@browser = IE.new
|
|
@@ -20,6 +20,9 @@ describe "Table" do
|
|
|
20
20
|
@browser.table(:index, 1).should exist
|
|
21
21
|
@browser.table(:xpath, "//table[@id='axis_example']").should exist
|
|
22
22
|
end
|
|
23
|
+
it "should return true if the element exists (default how = :id)" do
|
|
24
|
+
@browser.table("axis_example").should exist
|
|
25
|
+
end
|
|
23
26
|
it "should return false if the table does not exist" do
|
|
24
27
|
@browser.table(:id, 'no_such_id').should_not exist
|
|
25
28
|
@browser.table(:id, /no_such_id/).should_not exist
|
|
@@ -88,7 +91,7 @@ describe "Table" do
|
|
|
88
91
|
@browser.table(:id, 'outer')[3].id.should == "outer_last"
|
|
89
92
|
end
|
|
90
93
|
end
|
|
91
|
-
|
|
94
|
+
|
|
92
95
|
describe "#each" do
|
|
93
96
|
it "should iterate through the table's rows" do
|
|
94
97
|
index = 1
|
|
@@ -104,6 +107,23 @@ describe "Table" do
|
|
|
104
107
|
end
|
|
105
108
|
end
|
|
106
109
|
|
|
110
|
+
describe "#body" do
|
|
111
|
+
it "should return the correct instance of TableBody" do
|
|
112
|
+
body = @browser.table(:index, 1).body(:id, 'first')
|
|
113
|
+
body.instance_of?(TableBody).should be_true
|
|
114
|
+
body[1][1].text.should == "March 2008"
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "#bodies" do
|
|
119
|
+
it "should return the correct instance of TableBodies" do
|
|
120
|
+
bodies = @browser.table(:index, 1).bodies
|
|
121
|
+
bodies.instance_of?(TableBodies).should be_true
|
|
122
|
+
bodies[1].id.should == "first"
|
|
123
|
+
bodies[2].id.should == "second"
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
107
127
|
after :all do
|
|
108
128
|
@browser.close
|
|
109
129
|
end
|
data/spec/tables_spec.rb
CHANGED
data/spec/text_field_spec.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe "TextField" do
|
|
3
|
+
describe TextField do
|
|
6
4
|
|
|
7
5
|
before :all do
|
|
8
6
|
@browser = IE.new
|
|
@@ -13,7 +11,7 @@ describe "TextField" do
|
|
|
13
11
|
@browser.goto(TEST_HOST + "/forms_with_input_elements.html")
|
|
14
12
|
end
|
|
15
13
|
|
|
16
|
-
#
|
|
14
|
+
# Exists method
|
|
17
15
|
describe "#exists?" do
|
|
18
16
|
it "should return true if the element exists" do
|
|
19
17
|
@browser.text_field(:id, 'new_user_email').should exist
|
|
@@ -29,15 +27,15 @@ describe "TextField" do
|
|
|
29
27
|
@browser.text_field(:index, 1).should exist
|
|
30
28
|
@browser.text_field(:xpath, "//input[@id='new_user_email']").should exist
|
|
31
29
|
end
|
|
32
|
-
|
|
30
|
+
it "should return true if the element exists (default how = :name)" do
|
|
31
|
+
@browser.text_field("new_user_email").should exist
|
|
32
|
+
end
|
|
33
33
|
it "should return true if the element exists (no type attribute)" do
|
|
34
34
|
@browser.text_field(:id, 'new_user_first_name').should exist
|
|
35
35
|
end
|
|
36
|
-
|
|
37
36
|
it "should return true if the element exists (invalid type attribute)" do
|
|
38
37
|
@browser.text_field(:id, 'new_user_last_name').should exist
|
|
39
38
|
end
|
|
40
|
-
|
|
41
39
|
it "should return false if the element does not exist" do
|
|
42
40
|
@browser.text_field(:id, 'no_such_id').should_not exist
|
|
43
41
|
@browser.text_field(:id, /no_such_id/).should_not exist
|
|
@@ -52,17 +50,14 @@ describe "TextField" do
|
|
|
52
50
|
@browser.text_field(:index, 1337).should_not exist
|
|
53
51
|
@browser.text_field(:xpath, "//input[@id='no_such_id']").should_not exist
|
|
54
52
|
end
|
|
55
|
-
|
|
56
53
|
it "should raise ArgumentError when 'what' argument is invalid" do
|
|
57
54
|
lambda { @browser.text_field(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
|
58
55
|
end
|
|
59
|
-
|
|
60
56
|
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
|
61
57
|
lambda { @browser.text_field(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
|
62
58
|
end
|
|
63
59
|
end
|
|
64
60
|
|
|
65
|
-
|
|
66
61
|
# Attribute methods
|
|
67
62
|
describe "#id" do
|
|
68
63
|
it "should return the id attribute if the text field exists" do
|
|
@@ -92,10 +87,15 @@ describe "TextField" do
|
|
|
92
87
|
end
|
|
93
88
|
|
|
94
89
|
describe "#type" do
|
|
95
|
-
#TODO: What if the type attribute is non-existent or invalid?
|
|
96
90
|
it "should return the type attribute if the text field exists" do
|
|
97
91
|
@browser.text_field(:index, 4).type.should == "text"
|
|
98
92
|
end
|
|
93
|
+
it "should return 'text' if the type attribute is invalid" do
|
|
94
|
+
@browser.text_field(:id, 'new_user_last_name').type.should == "text"
|
|
95
|
+
end
|
|
96
|
+
it "should return 'text' if the type attribute does not exist" do
|
|
97
|
+
@browser.text_field(:id, 'new_user_first_name').type.should == "text"
|
|
98
|
+
end
|
|
99
99
|
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
100
100
|
lambda { @browser.text_field(:index, 1337).type }.should raise_error(UnknownObjectException)
|
|
101
101
|
end
|
|
@@ -121,6 +121,9 @@ describe "TextField" do
|
|
|
121
121
|
it "should return false for disabled text fields" do
|
|
122
122
|
@browser.text_field(:name, "new_user_species").should_not be_enabled
|
|
123
123
|
end
|
|
124
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
125
|
+
lambda { @browser.text_field(:id, "no_such_id").enabled? }.should raise_error(UnknownObjectException)
|
|
126
|
+
end
|
|
124
127
|
end
|
|
125
128
|
|
|
126
129
|
describe "#disabled?" do
|
|
@@ -131,7 +134,7 @@ describe "TextField" do
|
|
|
131
134
|
@browser.text_field(:index, 1).should_not be_disabled
|
|
132
135
|
end
|
|
133
136
|
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
134
|
-
lambda { @browser.text_field(:index, 1337).disabled? }.should raise_error(UnknownObjectException)
|
|
137
|
+
lambda { @browser.text_field(:index, 1337).disabled? }.should raise_error(UnknownObjectException)
|
|
135
138
|
end
|
|
136
139
|
end
|
|
137
140
|
|
|
@@ -143,11 +146,13 @@ describe "TextField" do
|
|
|
143
146
|
it "should return false for writeable text fields" do
|
|
144
147
|
@browser.text_field(:name, "new_user_email").should_not be_readonly
|
|
145
148
|
end
|
|
149
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
150
|
+
lambda { @browser.text_field(:id, 'no_such_id').readonly? }.should raise_error(UnknownObjectException)
|
|
151
|
+
end
|
|
146
152
|
end
|
|
147
153
|
|
|
148
154
|
|
|
149
155
|
# Manipulation methods
|
|
150
|
-
|
|
151
156
|
describe "#append" do
|
|
152
157
|
it "should append the text to the text field" do
|
|
153
158
|
@browser.text_field(:name, "new_user_occupation").append(" Append This")
|
|
@@ -175,6 +180,9 @@ describe "TextField" do
|
|
|
175
180
|
@browser.text_field(:id, "delete_user_comment").clear
|
|
176
181
|
@browser.text_field(:id, "delete_user_comment").get_contents.should be_empty
|
|
177
182
|
end
|
|
183
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
184
|
+
lambda { @browser.text_field(:id, "no_such_id").clear }.should raise_error(UnknownObjectException)
|
|
185
|
+
end
|
|
178
186
|
end
|
|
179
187
|
|
|
180
188
|
describe "#drag_contents_to" do
|
|
@@ -184,12 +192,22 @@ describe "TextField" do
|
|
|
184
192
|
@browser.text_field(:name, "new_user_first_name").value.should be_empty
|
|
185
193
|
@browser.text_field(:id, "new_user_last_name").value.should == "Smith"
|
|
186
194
|
end
|
|
195
|
+
it "should raise UnknownObjectException if either of the text fields doesn't exist" do
|
|
196
|
+
lambda { @browser.text_field(:id, "no_such_id").drag_contents_to(:name, "new_user_last_name") }.should raise_error(UnknownObjectException)
|
|
197
|
+
lambda { @browser.text_field(:name, "new_user_first_name").drag_contents_to(:id, "no_such_id") }.should raise_error(UnknownObjectException)
|
|
198
|
+
end
|
|
187
199
|
end
|
|
188
200
|
|
|
189
201
|
describe "#get_contents" do
|
|
202
|
+
it "should return the contents of the text field" do
|
|
203
|
+
@browser.text_field(:name, "new_user_occupation").get_contents.should == "Developer"
|
|
204
|
+
end
|
|
190
205
|
it "should raise UnknownObjectException when accessing a non-existing element" do
|
|
191
206
|
lambda { @browser.text_field(:name, "no_such_name").get_contents }.should raise_error(UnknownObjectException)
|
|
192
207
|
end
|
|
208
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
209
|
+
lambda { @browser.text_field(:id, "no_such_id").get_contents }.should raise_error(UnknownObjectException)
|
|
210
|
+
end
|
|
193
211
|
end
|
|
194
212
|
|
|
195
213
|
describe "#value=" do
|
|
@@ -197,16 +215,22 @@ describe "TextField" do
|
|
|
197
215
|
@browser.text_field(:id, 'new_user_email').value = 'Hello Cruel World'
|
|
198
216
|
@browser.text_field(:id, "new_user_email").value.should == 'Hello Cruel World'
|
|
199
217
|
end
|
|
200
|
-
|
|
201
218
|
it "should be able to set multi-byte characters" do
|
|
202
219
|
@browser.text_field(:name, "new_user_occupation").value = "ijij"
|
|
203
220
|
@browser.text_field(:name, "new_user_occupation").get_contents.should == "ijij"
|
|
204
221
|
end
|
|
205
|
-
|
|
222
|
+
it "should be able to set Latin 1 characters" do
|
|
223
|
+
@browser.goto(TEST_HOST + "/latin1_text.html")
|
|
224
|
+
@browser.text_field(:id, "charset").value = "B\370rsmegler"
|
|
225
|
+
@browser.text_field(:id, "charset").value.should == "B\370rsmegler"
|
|
226
|
+
end
|
|
206
227
|
it "should set the value of a textarea element" do
|
|
207
228
|
@browser.text_field(:id, 'delete_user_comment').value = 'Hello Cruel World'
|
|
208
229
|
@browser.text_field(:id, "delete_user_comment").value.should == 'Hello Cruel World'
|
|
209
230
|
end
|
|
231
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
232
|
+
lambda { @browser.text_field(:name, "no_such_name").value = 'yo' }.should raise_error(UnknownObjectException)
|
|
233
|
+
end
|
|
210
234
|
end
|
|
211
235
|
|
|
212
236
|
describe "#set" do
|
|
@@ -214,17 +238,14 @@ describe "TextField" do
|
|
|
214
238
|
@browser.text_field(:id, 'new_user_email').set('Bye Cruel World')
|
|
215
239
|
@browser.text_field(:id, "new_user_email").value.should == 'Bye Cruel World'
|
|
216
240
|
end
|
|
217
|
-
|
|
218
241
|
it "should set the value of a textarea element" do
|
|
219
242
|
@browser.text_field(:id, 'delete_user_comment').set('Hello Cruel World')
|
|
220
243
|
@browser.text_field(:id, "delete_user_comment").value.should == 'Hello Cruel World'
|
|
221
244
|
end
|
|
222
|
-
|
|
223
245
|
it "should fire events" do
|
|
224
246
|
@browser.text_field(:id, "new_user_username").set("Hello World")
|
|
225
247
|
@browser.span(:id, "current_length").text.should == "11"
|
|
226
248
|
end
|
|
227
|
-
|
|
228
249
|
it "should be able to set the value of a password field" do
|
|
229
250
|
@browser.text_field(:name , 'new_user_password').set('secret')
|
|
230
251
|
@browser.text_field(:name , 'new_user_password').value.should == 'secret'
|
|
@@ -233,6 +254,14 @@ describe "TextField" do
|
|
|
233
254
|
@browser.text_field(:name, "new_user_occupation").set("ijij")
|
|
234
255
|
@browser.text_field(:name, "new_user_occupation").get_contents.should == "ijij"
|
|
235
256
|
end
|
|
257
|
+
it "should be able to set Latin 1 characters" do
|
|
258
|
+
@browser.goto(TEST_HOST + "/latin1_text.html")
|
|
259
|
+
@browser.text_field(:id, "charset").set("B\370rsmegler")
|
|
260
|
+
@browser.text_field(:id, "charset").get_contents.should == "B\370rsmegler"
|
|
261
|
+
end
|
|
262
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
263
|
+
lambda { @browser.text_field(:id, "no_such_id").set('secret') }.should raise_error(UnknownObjectException)
|
|
264
|
+
end
|
|
236
265
|
end
|
|
237
266
|
|
|
238
267
|
describe "#verify_contains" do
|
|
@@ -244,10 +273,13 @@ describe "TextField" do
|
|
|
244
273
|
@browser.text_field(:name, "new_user_email").verify_contains("no_such_text").should be_false
|
|
245
274
|
@browser.text_field(:name, "new_user_email").verify_contains(/no_such_text/).should be_false
|
|
246
275
|
end
|
|
276
|
+
it "should raise UnknownObjectException if the text field doesn't exist" do
|
|
277
|
+
lambda { @browser.text_field(:id, "no_such_id").verify_contains("Developer") }.should raise_error(UnknownObjectException)
|
|
278
|
+
end
|
|
247
279
|
end
|
|
248
280
|
|
|
249
281
|
after :all do
|
|
250
282
|
@browser.close
|
|
251
283
|
end
|
|
252
|
-
|
|
253
|
-
|
|
284
|
+
|
|
285
|
+
end
|