mkuklis-webrat 0.5.1 → 0.6.rc1
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/.document +3 -3
- data/.gitignore +14 -14
- data/History.txt +413 -413
- data/MIT-LICENSE.txt +19 -19
- data/README.rdoc +84 -84
- data/Rakefile +187 -187
- data/VERSION +1 -1
- data/install.rb +1 -1
- data/lib/webrat/adapters/mechanize.rb +78 -78
- data/lib/webrat/adapters/merb.rb +11 -11
- data/lib/webrat/adapters/rack.rb +25 -25
- data/lib/webrat/adapters/rails.rb +81 -81
- data/lib/webrat/adapters/sinatra.rb +9 -9
- data/lib/webrat/core/configuration.rb +92 -92
- data/lib/webrat/core/elements/area.rb +31 -31
- data/lib/webrat/core/elements/element.rb +33 -33
- data/lib/webrat/core/elements/field.rb +487 -487
- data/lib/webrat/core/elements/form.rb +103 -103
- data/lib/webrat/core/elements/label.rb +31 -31
- data/lib/webrat/core/elements/link.rb +93 -93
- data/lib/webrat/core/elements/select_option.rb +48 -48
- data/lib/webrat/core/locators/area_locator.rb +38 -38
- data/lib/webrat/core/locators/button_locator.rb +54 -54
- data/lib/webrat/core/locators/field_by_id_locator.rb +37 -37
- data/lib/webrat/core/locators/field_labeled_locator.rb +56 -56
- data/lib/webrat/core/locators/field_locator.rb +25 -25
- data/lib/webrat/core/locators/field_named_locator.rb +41 -41
- data/lib/webrat/core/locators/form_locator.rb +19 -19
- data/lib/webrat/core/locators/label_locator.rb +34 -34
- data/lib/webrat/core/locators/link_locator.rb +74 -74
- data/lib/webrat/core/locators/locator.rb +20 -20
- data/lib/webrat/core/locators/select_option_locator.rb +59 -59
- data/lib/webrat/core/locators.rb +20 -20
- data/lib/webrat/core/logging.rb +23 -23
- data/lib/webrat/core/matchers/have_content.rb +68 -68
- data/lib/webrat/core/matchers/have_selector.rb +74 -74
- data/lib/webrat/core/matchers/have_tag.rb +21 -21
- data/lib/webrat/core/matchers/have_xpath.rb +122 -122
- data/lib/webrat/core/matchers.rb +4 -4
- data/lib/webrat/core/methods.rb +64 -64
- data/lib/webrat/core/mime.rb +18 -18
- data/lib/webrat/core/save_and_open_page.rb +48 -48
- data/lib/webrat/core/scope.rb +365 -365
- data/lib/webrat/core/session.rb +306 -306
- data/lib/webrat/core/xml.rb +72 -72
- data/lib/webrat/core.rb +13 -13
- data/lib/webrat/core_extensions/blank.rb +58 -58
- data/lib/webrat/core_extensions/deprecate.rb +8 -8
- data/lib/webrat/core_extensions/detect_mapped.rb +12 -12
- data/lib/webrat/core_extensions/meta_class.rb +6 -6
- data/lib/webrat/core_extensions/nil_to_param.rb +5 -5
- data/lib/webrat/core_extensions/tcp_socket.rb +27 -27
- data/lib/webrat/integrations/merb.rb +10 -10
- data/lib/webrat/integrations/rails.rb +25 -25
- data/lib/webrat/integrations/rspec-rails.rb +10 -10
- data/lib/webrat/integrations/selenium.rb +11 -11
- data/lib/webrat/merb.rb +9 -9
- data/lib/webrat/rspec-rails.rb +2 -2
- data/lib/webrat/selenium/application_server_factory.rb +40 -40
- data/lib/webrat/selenium/application_servers/external.rb +26 -26
- data/lib/webrat/selenium/application_servers/merb.rb +50 -50
- data/lib/webrat/selenium/application_servers/rails.rb +3 -6
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -37
- data/lib/webrat/selenium/application_servers.rb +5 -5
- data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -19
- data/lib/webrat/selenium/location_strategy_javascript/label.js +42 -42
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +6 -6
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +32 -32
- data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -15
- data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -5
- data/lib/webrat/selenium/matchers/have_content.rb +66 -66
- data/lib/webrat/selenium/matchers/have_selector.rb +49 -49
- data/lib/webrat/selenium/matchers/have_tag.rb +72 -72
- data/lib/webrat/selenium/matchers/have_xpath.rb +45 -45
- data/lib/webrat/selenium/matchers.rb +4 -4
- data/lib/webrat/selenium/selenium_extensions.js +5 -5
- data/lib/webrat/selenium/selenium_rc_server.rb +86 -86
- data/lib/webrat/selenium/selenium_session.rb +267 -272
- data/lib/webrat/selenium/silence_stream.rb +18 -18
- data/lib/webrat/selenium.rb +70 -70
- data/lib/webrat.rb +18 -18
- data/spec/fakes/test_adapter.rb +37 -37
- data/spec/integration/mechanize/Rakefile +6 -6
- data/spec/integration/mechanize/config.ru +1 -1
- data/spec/integration/mechanize/sample_app.rb +20 -20
- data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -22
- data/spec/integration/mechanize/spec/spec_helper.rb +27 -27
- data/spec/integration/merb/.gitignore +20 -20
- data/spec/integration/merb/Rakefile +35 -35
- data/spec/integration/merb/app/controllers/application.rb +2 -2
- data/spec/integration/merb/app/controllers/exceptions.rb +13 -13
- data/spec/integration/merb/app/controllers/testing.rb +27 -27
- data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -63
- data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -47
- data/spec/integration/merb/app/views/layout/application.html.erb +11 -11
- data/spec/integration/merb/app/views/testing/show_form.html.erb +26 -26
- data/spec/integration/merb/app/views/testing/upload.html.erb +8 -8
- data/spec/integration/merb/config/environments/development.rb +15 -15
- data/spec/integration/merb/config/environments/rake.rb +11 -11
- data/spec/integration/merb/config/environments/test.rb +14 -14
- data/spec/integration/merb/config/init.rb +25 -25
- data/spec/integration/merb/config/rack.rb +11 -11
- data/spec/integration/merb/config/router.rb +34 -34
- data/spec/integration/merb/spec/spec.opts +1 -1
- data/spec/integration/merb/spec/spec_helper.rb +26 -26
- data/spec/integration/merb/spec/webrat_spec.rb +39 -39
- data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -31
- data/spec/integration/merb/tasks/merb.thor/common.rb +64 -64
- data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -124
- data/spec/integration/merb/tasks/merb.thor/main.thor +149 -149
- data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -93
- data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -40
- data/spec/integration/rack/Rakefile +5 -5
- data/spec/integration/rack/app.rb +89 -89
- data/spec/integration/rack/test/helper.rb +21 -21
- data/spec/integration/rack/test/webrat_rack_test.rb +73 -73
- data/spec/integration/rails/.gitignore +3 -3
- data/spec/integration/rails/Rakefile +30 -30
- data/spec/integration/rails/app/controllers/application.rb +15 -15
- data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -7
- data/spec/integration/rails/app/controllers/fields_controller.rb +4 -4
- data/spec/integration/rails/app/controllers/links_controller.rb +7 -7
- data/spec/integration/rails/app/controllers/webrat_controller.rb +46 -46
- data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -2
- data/spec/integration/rails/app/helpers/fields_helper.rb +2 -2
- data/spec/integration/rails/app/helpers/links_helper.rb +2 -2
- data/spec/integration/rails/app/views/buttons/show.html.erb +10 -10
- data/spec/integration/rails/app/views/fields/show.html.erb +8 -8
- data/spec/integration/rails/app/views/links/show.html.erb +5 -5
- data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +3 -3
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +10 -10
- data/spec/integration/rails/app/views/webrat/form.html.erb +27 -27
- data/spec/integration/rails/app/views/webrat/within.html.erb +2 -2
- data/spec/integration/rails/config/boot.rb +109 -109
- data/spec/integration/rails/config/environment.rb +12 -12
- data/spec/integration/rails/config/environments/development.rb +17 -17
- data/spec/integration/rails/config/environments/selenium.rb +22 -22
- data/spec/integration/rails/config/environments/test.rb +22 -22
- data/spec/integration/rails/config/initializers/inflections.rb +10 -10
- data/spec/integration/rails/config/initializers/mime_types.rb +5 -5
- data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -17
- data/spec/integration/rails/config/locales/en.yml +4 -4
- data/spec/integration/rails/config/routes.rb +19 -19
- data/spec/integration/rails/public/404.html +29 -29
- data/spec/integration/rails/public/422.html +29 -29
- data/spec/integration/rails/public/500.html +33 -33
- data/spec/integration/rails/script/about +3 -3
- data/spec/integration/rails/script/console +3 -3
- data/spec/integration/rails/script/dbconsole +3 -3
- data/spec/integration/rails/script/destroy +3 -3
- data/spec/integration/rails/script/generate +3 -3
- data/spec/integration/rails/script/performance/benchmarker +3 -3
- data/spec/integration/rails/script/performance/profiler +3 -3
- data/spec/integration/rails/script/performance/request +3 -3
- data/spec/integration/rails/script/plugin +3 -3
- data/spec/integration/rails/script/process/inspector +3 -3
- data/spec/integration/rails/script/process/reaper +3 -3
- data/spec/integration/rails/script/process/spawner +3 -3
- data/spec/integration/rails/script/runner +3 -3
- data/spec/integration/rails/script/server +3 -3
- data/spec/integration/rails/test/integration/button_click_test.rb +80 -80
- data/spec/integration/rails/test/integration/fill_in_test.rb +24 -24
- data/spec/integration/rails/test/integration/link_click_test.rb +27 -27
- data/spec/integration/rails/test/integration/webrat_test.rb +122 -122
- data/spec/integration/rails/test/test_helper.rb +26 -26
- data/spec/integration/sinatra/Rakefile +5 -5
- data/spec/integration/sinatra/classic_app.rb +64 -64
- data/spec/integration/sinatra/modular_app.rb +16 -16
- data/spec/integration/sinatra/test/classic_app_test.rb +37 -37
- data/spec/integration/sinatra/test/modular_app_test.rb +18 -18
- data/spec/integration/sinatra/test/test_helper.rb +17 -17
- data/spec/private/core/configuration_spec.rb +87 -87
- data/spec/private/core/field_spec.rb +85 -85
- data/spec/private/core/link_spec.rb +24 -24
- data/spec/private/core/session_spec.rb +200 -200
- data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -73
- data/spec/private/nokogiri_spec.rb +77 -77
- data/spec/private/rails/attaches_file_spec.rb +81 -81
- data/spec/private/rails/rails_adapter_spec.rb +86 -86
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -26
- data/spec/public/basic_auth_spec.rb +24 -24
- data/spec/public/check_spec.rb +191 -191
- data/spec/public/choose_spec.rb +118 -118
- data/spec/public/click_area_spec.rb +106 -106
- data/spec/public/click_button_spec.rb +494 -494
- data/spec/public/click_link_spec.rb +511 -511
- data/spec/public/fill_in_spec.rb +224 -224
- data/spec/public/locators/field_by_xpath_spec.rb +19 -19
- data/spec/public/locators/field_labeled_spec.rb +172 -172
- data/spec/public/locators/field_with_id_spec.rb +16 -16
- data/spec/public/matchers/contain_spec.rb +114 -114
- data/spec/public/matchers/have_selector_spec.rb +146 -146
- data/spec/public/matchers/have_tag_spec.rb +39 -39
- data/spec/public/matchers/have_xpath_spec.rb +136 -136
- data/spec/public/reload_spec.rb +10 -10
- data/spec/public/save_and_open_spec.rb +70 -70
- data/spec/public/select_date_spec.rb +112 -112
- data/spec/public/select_datetime_spec.rb +137 -137
- data/spec/public/select_spec.rb +455 -455
- data/spec/public/select_time_spec.rb +100 -100
- data/spec/public/selenium/application_server_factory_spec.rb +49 -49
- data/spec/public/selenium/application_servers/external_spec.rb +12 -12
- data/spec/public/selenium/selenium_session_spec.rb +37 -37
- data/spec/public/set_hidden_field_spec.rb +5 -5
- data/spec/public/submit_form_spec.rb +5 -5
- data/spec/public/visit_spec.rb +58 -58
- data/spec/public/within_spec.rb +177 -177
- data/spec/spec.opts +1 -1
- data/spec/spec_helper.rb +54 -54
- data/webrat.gemspec +360 -0
- metadata +6 -5
@@ -1,146 +1,146 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
-
|
3
|
-
describe "have_selector" do
|
4
|
-
include Webrat::Matchers
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@body = <<-HTML
|
8
|
-
<div id='main'>
|
9
|
-
<div class='inner'>hello, world!</div>
|
10
|
-
<h2>Welcome "Bryan"</h2>
|
11
|
-
<h3>Welcome 'Bryan'</h3>
|
12
|
-
<h4>Welcome 'Bryan"</h4>
|
13
|
-
<ul>
|
14
|
-
<li>First</li>
|
15
|
-
<li>Second</li>
|
16
|
-
<li><a href="http://example.org/">Third</a></li>
|
17
|
-
</ul>
|
18
|
-
</div>
|
19
|
-
HTML
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should be able to match a CSS selector" do
|
23
|
-
@body.should have_selector("div")
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should not match a CSS selector that does not exist" do
|
27
|
-
@body.should_not have_selector("p")
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "specifying attributes" do
|
31
|
-
it "should be able to specify the attributes of the tag" do
|
32
|
-
@body.should have_selector("div", :class => "inner")
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "specifying content" do
|
37
|
-
it "should be able to specify the content of the tag" do
|
38
|
-
@body.should have_selector("div", :content => "hello, world!")
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should be able to specify the content of the tag with double quotes in it" do
|
42
|
-
@body.should have_selector("h2", :content => 'Welcome "Bryan"')
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should be able to specify the content of the tag with single quotes in it" do
|
46
|
-
@body.should have_selector("h3", :content => "Welcome 'Bryan'")
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should be able to specify the content of the tag with both kinds of quotes" do
|
50
|
-
@body.should have_selector("h4", :content => "Welcome 'Bryan\"")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "specifying counts" do
|
55
|
-
it "should be able to specify the number of occurences of the tag" do
|
56
|
-
@body.should have_selector("li", :count => 3)
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should not match if the count is wrong" do
|
60
|
-
lambda {
|
61
|
-
@body.should have_selector("li", :count => 4)
|
62
|
-
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should convert a string to an integer for count" do
|
66
|
-
@body.should have_selector("li", :count => "3")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe "specifying nested elements" do
|
71
|
-
it "should be able to loop over all the matched elements" do
|
72
|
-
@body.should have_selector("div") do |node|
|
73
|
-
node.first.name.should == "div"
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should not match of any of the matchers in the block fail" do
|
78
|
-
lambda {
|
79
|
-
@body.should have_selector("div") do |node|
|
80
|
-
node.first.name.should == "p"
|
81
|
-
end
|
82
|
-
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should be able to use #have_selector in the block" do
|
86
|
-
@body.should have_selector("#main") do |node|
|
87
|
-
node.should have_selector(".inner")
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should not match any parent tags in the block" do
|
92
|
-
lambda {
|
93
|
-
@body.should have_selector(".inner") do |node|
|
94
|
-
node.should have_selector("#main")
|
95
|
-
end
|
96
|
-
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should work with items that have multiple child nodes" do
|
100
|
-
@body.should have_selector("ul") do |n|
|
101
|
-
n.should have_selector("li", :content => "First")
|
102
|
-
n.should have_selector("li", :content => "Second")
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
it "should work with descendants of the matched elements" do
|
107
|
-
@body.should have_selector("ul") do |n|
|
108
|
-
n.should have_selector("a", :content => "Third")
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe "Test::Unit assertions" do
|
114
|
-
include Test::Unit::Assertions
|
115
|
-
|
116
|
-
before(:each) do
|
117
|
-
require 'test/unit'
|
118
|
-
should_receive(:response_body).and_return @body
|
119
|
-
end
|
120
|
-
|
121
|
-
describe "assert_have_selector" do
|
122
|
-
it "should pass when body contains the selection" do
|
123
|
-
assert_have_selector("div")
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should throw an exception when the body doesnt have matching selection" do
|
127
|
-
lambda {
|
128
|
-
assert_have_selector("p")
|
129
|
-
}.should raise_error(AssertionFailedError)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
describe "assert_have_not_selector" do
|
134
|
-
it "should pass when the body doesn't contan the selection" do
|
135
|
-
assert_have_no_selector("p")
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should throw an exception when the body does contain the selection" do
|
139
|
-
lambda {
|
140
|
-
assert_have_no_selector("div")
|
141
|
-
}.should raise_error(AssertionFailedError)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
+
|
3
|
+
describe "have_selector" do
|
4
|
+
include Webrat::Matchers
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@body = <<-HTML
|
8
|
+
<div id='main'>
|
9
|
+
<div class='inner'>hello, world!</div>
|
10
|
+
<h2>Welcome "Bryan"</h2>
|
11
|
+
<h3>Welcome 'Bryan'</h3>
|
12
|
+
<h4>Welcome 'Bryan"</h4>
|
13
|
+
<ul>
|
14
|
+
<li>First</li>
|
15
|
+
<li>Second</li>
|
16
|
+
<li><a href="http://example.org/">Third</a></li>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
HTML
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be able to match a CSS selector" do
|
23
|
+
@body.should have_selector("div")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should not match a CSS selector that does not exist" do
|
27
|
+
@body.should_not have_selector("p")
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "specifying attributes" do
|
31
|
+
it "should be able to specify the attributes of the tag" do
|
32
|
+
@body.should have_selector("div", :class => "inner")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "specifying content" do
|
37
|
+
it "should be able to specify the content of the tag" do
|
38
|
+
@body.should have_selector("div", :content => "hello, world!")
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be able to specify the content of the tag with double quotes in it" do
|
42
|
+
@body.should have_selector("h2", :content => 'Welcome "Bryan"')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should be able to specify the content of the tag with single quotes in it" do
|
46
|
+
@body.should have_selector("h3", :content => "Welcome 'Bryan'")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should be able to specify the content of the tag with both kinds of quotes" do
|
50
|
+
@body.should have_selector("h4", :content => "Welcome 'Bryan\"")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "specifying counts" do
|
55
|
+
it "should be able to specify the number of occurences of the tag" do
|
56
|
+
@body.should have_selector("li", :count => 3)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should not match if the count is wrong" do
|
60
|
+
lambda {
|
61
|
+
@body.should have_selector("li", :count => 4)
|
62
|
+
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should convert a string to an integer for count" do
|
66
|
+
@body.should have_selector("li", :count => "3")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "specifying nested elements" do
|
71
|
+
it "should be able to loop over all the matched elements" do
|
72
|
+
@body.should have_selector("div") do |node|
|
73
|
+
node.first.name.should == "div"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should not match of any of the matchers in the block fail" do
|
78
|
+
lambda {
|
79
|
+
@body.should have_selector("div") do |node|
|
80
|
+
node.first.name.should == "p"
|
81
|
+
end
|
82
|
+
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should be able to use #have_selector in the block" do
|
86
|
+
@body.should have_selector("#main") do |node|
|
87
|
+
node.should have_selector(".inner")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should not match any parent tags in the block" do
|
92
|
+
lambda {
|
93
|
+
@body.should have_selector(".inner") do |node|
|
94
|
+
node.should have_selector("#main")
|
95
|
+
end
|
96
|
+
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should work with items that have multiple child nodes" do
|
100
|
+
@body.should have_selector("ul") do |n|
|
101
|
+
n.should have_selector("li", :content => "First")
|
102
|
+
n.should have_selector("li", :content => "Second")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should work with descendants of the matched elements" do
|
107
|
+
@body.should have_selector("ul") do |n|
|
108
|
+
n.should have_selector("a", :content => "Third")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "Test::Unit assertions" do
|
114
|
+
include Test::Unit::Assertions
|
115
|
+
|
116
|
+
before(:each) do
|
117
|
+
require 'test/unit'
|
118
|
+
should_receive(:response_body).and_return @body
|
119
|
+
end
|
120
|
+
|
121
|
+
describe "assert_have_selector" do
|
122
|
+
it "should pass when body contains the selection" do
|
123
|
+
assert_have_selector("div")
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should throw an exception when the body doesnt have matching selection" do
|
127
|
+
lambda {
|
128
|
+
assert_have_selector("p")
|
129
|
+
}.should raise_error(AssertionFailedError)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe "assert_have_not_selector" do
|
134
|
+
it "should pass when the body doesn't contan the selection" do
|
135
|
+
assert_have_no_selector("p")
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should throw an exception when the body does contain the selection" do
|
139
|
+
lambda {
|
140
|
+
assert_have_no_selector("div")
|
141
|
+
}.should raise_error(AssertionFailedError)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
@@ -1,39 +1,39 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
-
|
3
|
-
describe "have_tag" do
|
4
|
-
include Webrat::Matchers
|
5
|
-
include Webrat::HaveTagMatcher
|
6
|
-
|
7
|
-
before(:each) do
|
8
|
-
@body = <<-HTML
|
9
|
-
<div id='main'>
|
10
|
-
<div class='inner'>hello, world!</div>
|
11
|
-
</div>
|
12
|
-
HTML
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should be an alias for have_selector" do
|
16
|
-
@body.should have_tag("div")
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "asserts for tags" do
|
20
|
-
include Test::Unit::Assertions
|
21
|
-
|
22
|
-
before(:each) do
|
23
|
-
should_receive(:response_body).and_return @body
|
24
|
-
require 'test/unit'
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "assert_have_tag" do
|
28
|
-
it "should be an alias for assert_have_selector" do
|
29
|
-
assert_have_tag("div")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "assert_have_no_tag" do
|
34
|
-
it "should be an alias for assert_have_no_selector" do
|
35
|
-
assert_have_no_tag("p")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
+
|
3
|
+
describe "have_tag" do
|
4
|
+
include Webrat::Matchers
|
5
|
+
include Webrat::HaveTagMatcher
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@body = <<-HTML
|
9
|
+
<div id='main'>
|
10
|
+
<div class='inner'>hello, world!</div>
|
11
|
+
</div>
|
12
|
+
HTML
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be an alias for have_selector" do
|
16
|
+
@body.should have_tag("div")
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "asserts for tags" do
|
20
|
+
include Test::Unit::Assertions
|
21
|
+
|
22
|
+
before(:each) do
|
23
|
+
should_receive(:response_body).and_return @body
|
24
|
+
require 'test/unit'
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "assert_have_tag" do
|
28
|
+
it "should be an alias for assert_have_selector" do
|
29
|
+
assert_have_tag("div")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "assert_have_no_tag" do
|
34
|
+
it "should be an alias for assert_have_no_selector" do
|
35
|
+
assert_have_no_tag("p")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,136 +1,136 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
-
|
3
|
-
describe "have_xpath" do
|
4
|
-
include Webrat::Matchers
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@body = <<-HTML
|
8
|
-
<div id='main'>
|
9
|
-
<div class='inner'>hello, world!</div>
|
10
|
-
<h2>Welcome "Bryan"</h2>
|
11
|
-
<h3>Welcome 'Bryan'</h3>
|
12
|
-
<h4>Welcome 'Bryan"</h4>
|
13
|
-
<ul>
|
14
|
-
<li>First</li>
|
15
|
-
<li>Second</li>
|
16
|
-
<li><a href="http://example.org">Third</a></li>
|
17
|
-
</ul>
|
18
|
-
</div>
|
19
|
-
HTML
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should be able to match an XPATH" do
|
23
|
-
@body.should have_xpath("//div")
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should be able to match an XPATH with attributes" do
|
27
|
-
@body.should have_xpath("//div", :class => "inner")
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should be able to match an XPATH with content" do
|
31
|
-
@body.should have_xpath("//div", :content => "hello, world!")
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should not match an XPATH without content" do
|
35
|
-
@body.should_not have_xpath("//div", :content => "not present")
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should be able to match an XPATH with content and class" do
|
39
|
-
@body.should have_xpath("//div", :class => "inner", :content => "hello, world!")
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should not match an XPATH with content and wrong class" do
|
43
|
-
@body.should_not have_xpath("//div", :class => "outer", :content => "hello, world!")
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should not match an XPATH with wrong content and class" do
|
47
|
-
@body.should_not have_xpath("//div", :class => "inner", :content => "wrong")
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should not match an XPATH with wrong content and wrong class" do
|
51
|
-
@body.should_not have_xpath("//div", :class => "outer", :content => "wrong")
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should not match a XPATH that does not exist" do
|
55
|
-
@body.should_not have_xpath("//p")
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should be able to loop over all the matched elements" do
|
59
|
-
@body.should have_xpath("//div") do |node|
|
60
|
-
node.first.name.should == "div"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should not match if any of the matchers in the block fail" do
|
65
|
-
lambda {
|
66
|
-
@body.should have_xpath("//div") do |node|
|
67
|
-
node.first.name.should == "p"
|
68
|
-
end
|
69
|
-
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should be able to use #have_xpath in the block" do
|
73
|
-
@body.should have_xpath("//div[@id='main']") do |node|
|
74
|
-
node.should have_xpath("./div[@class='inner']")
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should convert absolute paths to relative in the block" do
|
79
|
-
@body.should have_xpath("//div[@id='main']") do |node|
|
80
|
-
node.should have_xpath("//div[@class='inner']")
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should not match any parent tags in the block" do
|
85
|
-
lambda {
|
86
|
-
@body.should have_xpath("//div[@class='inner']") do |node|
|
87
|
-
node.should have_xpath("//div[@id='main']")
|
88
|
-
end
|
89
|
-
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should match descendants of the matched elements in the block" do
|
93
|
-
@body.should have_xpath("//ul") do |node|
|
94
|
-
node.should have_xpath("//a[@href='http://example.org']")
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should allow descendant selectors in the block" do
|
99
|
-
@body.should have_xpath("//div[@id='main']") do |node|
|
100
|
-
node.should have_xpath("//ul//a")
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
describe 'asserts for xpath' do
|
105
|
-
include Test::Unit::Assertions
|
106
|
-
|
107
|
-
before(:each) do
|
108
|
-
should_receive(:response_body).and_return @body
|
109
|
-
require 'test/unit'
|
110
|
-
end
|
111
|
-
|
112
|
-
describe "assert_have_xpath" do
|
113
|
-
it "should pass when body contains the selection" do
|
114
|
-
assert_have_xpath("//div")
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should throw an exception when the body doesnt have matching xpath" do
|
118
|
-
lambda {
|
119
|
-
assert_have_xpath("//p")
|
120
|
-
}.should raise_error(AssertionFailedError)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
describe "assert_have_no_xpath" do
|
125
|
-
it "should pass when the body doesn't contan the xpath" do
|
126
|
-
assert_have_no_xpath("//p")
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should throw an exception when the body does contain the xpath" do
|
130
|
-
lambda {
|
131
|
-
assert_have_no_xpath("//div")
|
132
|
-
}.should raise_error(AssertionFailedError)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
2
|
+
|
3
|
+
describe "have_xpath" do
|
4
|
+
include Webrat::Matchers
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@body = <<-HTML
|
8
|
+
<div id='main'>
|
9
|
+
<div class='inner'>hello, world!</div>
|
10
|
+
<h2>Welcome "Bryan"</h2>
|
11
|
+
<h3>Welcome 'Bryan'</h3>
|
12
|
+
<h4>Welcome 'Bryan"</h4>
|
13
|
+
<ul>
|
14
|
+
<li>First</li>
|
15
|
+
<li>Second</li>
|
16
|
+
<li><a href="http://example.org">Third</a></li>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
HTML
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be able to match an XPATH" do
|
23
|
+
@body.should have_xpath("//div")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be able to match an XPATH with attributes" do
|
27
|
+
@body.should have_xpath("//div", :class => "inner")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should be able to match an XPATH with content" do
|
31
|
+
@body.should have_xpath("//div", :content => "hello, world!")
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should not match an XPATH without content" do
|
35
|
+
@body.should_not have_xpath("//div", :content => "not present")
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should be able to match an XPATH with content and class" do
|
39
|
+
@body.should have_xpath("//div", :class => "inner", :content => "hello, world!")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should not match an XPATH with content and wrong class" do
|
43
|
+
@body.should_not have_xpath("//div", :class => "outer", :content => "hello, world!")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should not match an XPATH with wrong content and class" do
|
47
|
+
@body.should_not have_xpath("//div", :class => "inner", :content => "wrong")
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should not match an XPATH with wrong content and wrong class" do
|
51
|
+
@body.should_not have_xpath("//div", :class => "outer", :content => "wrong")
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should not match a XPATH that does not exist" do
|
55
|
+
@body.should_not have_xpath("//p")
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should be able to loop over all the matched elements" do
|
59
|
+
@body.should have_xpath("//div") do |node|
|
60
|
+
node.first.name.should == "div"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should not match if any of the matchers in the block fail" do
|
65
|
+
lambda {
|
66
|
+
@body.should have_xpath("//div") do |node|
|
67
|
+
node.first.name.should == "p"
|
68
|
+
end
|
69
|
+
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should be able to use #have_xpath in the block" do
|
73
|
+
@body.should have_xpath("//div[@id='main']") do |node|
|
74
|
+
node.should have_xpath("./div[@class='inner']")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should convert absolute paths to relative in the block" do
|
79
|
+
@body.should have_xpath("//div[@id='main']") do |node|
|
80
|
+
node.should have_xpath("//div[@class='inner']")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should not match any parent tags in the block" do
|
85
|
+
lambda {
|
86
|
+
@body.should have_xpath("//div[@class='inner']") do |node|
|
87
|
+
node.should have_xpath("//div[@id='main']")
|
88
|
+
end
|
89
|
+
}.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should match descendants of the matched elements in the block" do
|
93
|
+
@body.should have_xpath("//ul") do |node|
|
94
|
+
node.should have_xpath("//a[@href='http://example.org']")
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should allow descendant selectors in the block" do
|
99
|
+
@body.should have_xpath("//div[@id='main']") do |node|
|
100
|
+
node.should have_xpath("//ul//a")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe 'asserts for xpath' do
|
105
|
+
include Test::Unit::Assertions
|
106
|
+
|
107
|
+
before(:each) do
|
108
|
+
should_receive(:response_body).and_return @body
|
109
|
+
require 'test/unit'
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "assert_have_xpath" do
|
113
|
+
it "should pass when body contains the selection" do
|
114
|
+
assert_have_xpath("//div")
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should throw an exception when the body doesnt have matching xpath" do
|
118
|
+
lambda {
|
119
|
+
assert_have_xpath("//p")
|
120
|
+
}.should raise_error(AssertionFailedError)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe "assert_have_no_xpath" do
|
125
|
+
it "should pass when the body doesn't contan the xpath" do
|
126
|
+
assert_have_no_xpath("//p")
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should throw an exception when the body does contain the xpath" do
|
130
|
+
lambda {
|
131
|
+
assert_have_no_xpath("//div")
|
132
|
+
}.should raise_error(AssertionFailedError)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
data/spec/public/reload_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
describe "reloads" do
|
4
|
-
it "should reload the page with http referer" do
|
5
|
-
webrat_session.should_receive(:get).with("/", {})
|
6
|
-
webrat_session.should_receive(:get).with("/", {}, {"HTTP_REFERER"=>"/"})
|
7
|
-
visit("/")
|
8
|
-
reload
|
9
|
-
end
|
10
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe "reloads" do
|
4
|
+
it "should reload the page with http referer" do
|
5
|
+
webrat_session.should_receive(:get).with("/", {})
|
6
|
+
webrat_session.should_receive(:get).with("/", {}, {"HTTP_REFERER"=>"/"})
|
7
|
+
visit("/")
|
8
|
+
reload
|
9
|
+
end
|
10
|
+
end
|