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,77 +1,77 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
# if defined?(Nokogiri::XML) && Webrat.configuration.parse_with_nokogiri?
|
4
|
-
describe "Nokogiri Extension" do
|
5
|
-
include Webrat::Matchers
|
6
|
-
|
7
|
-
def fail
|
8
|
-
raise_error(Spec::Expectations::ExpectationNotMetError)
|
9
|
-
end
|
10
|
-
|
11
|
-
before(:each) do
|
12
|
-
@text_and_password = <<-HTML
|
13
|
-
<div>
|
14
|
-
<input type="text"/>
|
15
|
-
<input type="password"/>
|
16
|
-
<span type="text"/>
|
17
|
-
</div>
|
18
|
-
HTML
|
19
|
-
|
20
|
-
@text_only = <<-HTML
|
21
|
-
<div>
|
22
|
-
<input type="text" disabled="disabled" />
|
23
|
-
</div>
|
24
|
-
HTML
|
25
|
-
|
26
|
-
@password_only = <<-HTML
|
27
|
-
<div>
|
28
|
-
<input type="password"/>
|
29
|
-
<div>
|
30
|
-
HTML
|
31
|
-
end
|
32
|
-
|
33
|
-
describe ":text" do
|
34
|
-
it "passes have_selector(:text) if a node with type=text exists" do
|
35
|
-
@text_and_password.should have_selector(":text")
|
36
|
-
end
|
37
|
-
|
38
|
-
it "passes not have_selector(:text) if no node with text=text exists" do
|
39
|
-
@password_only.should_not have_selector(":text")
|
40
|
-
end
|
41
|
-
|
42
|
-
it "fails have_selector(:text) if no node with type=text exists" do
|
43
|
-
lambda { @password_only.should have_selector(":text") }.should fail
|
44
|
-
end
|
45
|
-
|
46
|
-
it "fails not have_selector(:text) if a node with type=text exists" do
|
47
|
-
lambda { @text_only.should_not have_selector(":text") }.should fail
|
48
|
-
end
|
49
|
-
|
50
|
-
it "works together with other selectors" do
|
51
|
-
@text_and_password.should have_selector("input:text[type*='te']")
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe ":password" do
|
56
|
-
it "passes have_selector(:password) if a node with type=password exists" do
|
57
|
-
@text_and_password.should have_selector(":password")
|
58
|
-
end
|
59
|
-
|
60
|
-
it "passes not have_selector(:text) if no node with text=text exists" do
|
61
|
-
@text_only.should_not have_selector(":password")
|
62
|
-
end
|
63
|
-
|
64
|
-
it "fails have_selector(:password) if no node with type=password exists" do
|
65
|
-
lambda { @text_only.should have_selector(":password") }.should fail
|
66
|
-
end
|
67
|
-
|
68
|
-
it "fails not have_selector(:password) if a node with type=password exists" do
|
69
|
-
lambda { @password_only.should_not have_selector(":password") }.should fail
|
70
|
-
end
|
71
|
-
|
72
|
-
it "works together with other selectors" do
|
73
|
-
@text_and_password.should have_selector("input:password[type*='pa']")
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
# end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
# if defined?(Nokogiri::XML) && Webrat.configuration.parse_with_nokogiri?
|
4
|
+
describe "Nokogiri Extension" do
|
5
|
+
include Webrat::Matchers
|
6
|
+
|
7
|
+
def fail
|
8
|
+
raise_error(Spec::Expectations::ExpectationNotMetError)
|
9
|
+
end
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
@text_and_password = <<-HTML
|
13
|
+
<div>
|
14
|
+
<input type="text"/>
|
15
|
+
<input type="password"/>
|
16
|
+
<span type="text"/>
|
17
|
+
</div>
|
18
|
+
HTML
|
19
|
+
|
20
|
+
@text_only = <<-HTML
|
21
|
+
<div>
|
22
|
+
<input type="text" disabled="disabled" />
|
23
|
+
</div>
|
24
|
+
HTML
|
25
|
+
|
26
|
+
@password_only = <<-HTML
|
27
|
+
<div>
|
28
|
+
<input type="password"/>
|
29
|
+
<div>
|
30
|
+
HTML
|
31
|
+
end
|
32
|
+
|
33
|
+
describe ":text" do
|
34
|
+
it "passes have_selector(:text) if a node with type=text exists" do
|
35
|
+
@text_and_password.should have_selector(":text")
|
36
|
+
end
|
37
|
+
|
38
|
+
it "passes not have_selector(:text) if no node with text=text exists" do
|
39
|
+
@password_only.should_not have_selector(":text")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "fails have_selector(:text) if no node with type=text exists" do
|
43
|
+
lambda { @password_only.should have_selector(":text") }.should fail
|
44
|
+
end
|
45
|
+
|
46
|
+
it "fails not have_selector(:text) if a node with type=text exists" do
|
47
|
+
lambda { @text_only.should_not have_selector(":text") }.should fail
|
48
|
+
end
|
49
|
+
|
50
|
+
it "works together with other selectors" do
|
51
|
+
@text_and_password.should have_selector("input:text[type*='te']")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ":password" do
|
56
|
+
it "passes have_selector(:password) if a node with type=password exists" do
|
57
|
+
@text_and_password.should have_selector(":password")
|
58
|
+
end
|
59
|
+
|
60
|
+
it "passes not have_selector(:text) if no node with text=text exists" do
|
61
|
+
@text_only.should_not have_selector(":password")
|
62
|
+
end
|
63
|
+
|
64
|
+
it "fails have_selector(:password) if no node with type=password exists" do
|
65
|
+
lambda { @text_only.should have_selector(":password") }.should fail
|
66
|
+
end
|
67
|
+
|
68
|
+
it "fails not have_selector(:password) if a node with type=password exists" do
|
69
|
+
lambda { @password_only.should_not have_selector(":password") }.should fail
|
70
|
+
end
|
71
|
+
|
72
|
+
it "works together with other selectors" do
|
73
|
+
@text_and_password.should have_selector("input:password[type*='pa']")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
# end
|
@@ -1,81 +1,81 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
-
|
3
|
-
describe "attach_file" do
|
4
|
-
before do
|
5
|
-
Webrat.configuration.mode = :rails
|
6
|
-
@filename = __FILE__
|
7
|
-
@uploaded_file = mock("uploaded file")
|
8
|
-
ActionController::TestUploadedFile.stub!(:new => @uploaded_file)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should fail if no file field found" do
|
12
|
-
with_html <<-HTML
|
13
|
-
<html>
|
14
|
-
<form method="post" action="/widgets">
|
15
|
-
</form>
|
16
|
-
</html>
|
17
|
-
HTML
|
18
|
-
lambda { attach_file("Doc", "/some/path") }.should raise_error(Webrat::NotFoundError)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should submit empty strings for blank file fields" do
|
22
|
-
with_html <<-HTML
|
23
|
-
<html>
|
24
|
-
<form method="post" action="/widgets">
|
25
|
-
<input type="file" id="widget_file" name="widget[file]" />
|
26
|
-
<input type="submit" />
|
27
|
-
</form>
|
28
|
-
</html>
|
29
|
-
HTML
|
30
|
-
webrat_session.should_receive(:post).with("/widgets", { "widget" => { "file" => "" } })
|
31
|
-
click_button
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should submit the attached file" do
|
35
|
-
with_html <<-HTML
|
36
|
-
<html>
|
37
|
-
<form method="post" action="/widgets">
|
38
|
-
<label for="widget_file">Document</label>
|
39
|
-
<input type="file" id="widget_file" name="widget[file]" />
|
40
|
-
<input type="submit" />
|
41
|
-
</form>
|
42
|
-
</html>
|
43
|
-
HTML
|
44
|
-
webrat_session.should_receive(:post).with("/widgets", { "widget" => { "file" => @uploaded_file } })
|
45
|
-
attach_file "Document", @filename
|
46
|
-
click_button
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should support collections" do
|
50
|
-
with_html <<-HTML
|
51
|
-
<html>
|
52
|
-
<form method="post" action="/widgets">
|
53
|
-
<label for="widget_file1">Document</label>
|
54
|
-
<input type="file" id="widget_file1" name="widget[files][]" />
|
55
|
-
<label for="widget_file2">Spreadsheet</label>
|
56
|
-
<input type="file" id="widget_file2" name="widget[files][]" />
|
57
|
-
<input type="submit" />
|
58
|
-
</form>
|
59
|
-
</html>
|
60
|
-
HTML
|
61
|
-
webrat_session.should_receive(:post).with("/widgets", { "widget" => { "files" => [@uploaded_file, @uploaded_file] } })
|
62
|
-
attach_file "Document", @filename
|
63
|
-
attach_file "Spreadsheet", @filename
|
64
|
-
click_button
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should allow the content type to be specified" do
|
68
|
-
with_html <<-HTML
|
69
|
-
<html>
|
70
|
-
<form method="post" action="/widgets">
|
71
|
-
<label for="person_picture">Picture</label>
|
72
|
-
<input type="file" id="person_picture" name="person[picture]" />
|
73
|
-
<input type="submit" />
|
74
|
-
</form>
|
75
|
-
</html>
|
76
|
-
HTML
|
77
|
-
ActionController::TestUploadedFile.should_receive(:new).with(@filename, "image/png").any_number_of_times
|
78
|
-
attach_file "Picture", @filename, "image/png"
|
79
|
-
click_button
|
80
|
-
end
|
81
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe "attach_file" do
|
4
|
+
before do
|
5
|
+
Webrat.configuration.mode = :rails
|
6
|
+
@filename = __FILE__
|
7
|
+
@uploaded_file = mock("uploaded file")
|
8
|
+
ActionController::TestUploadedFile.stub!(:new => @uploaded_file)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should fail if no file field found" do
|
12
|
+
with_html <<-HTML
|
13
|
+
<html>
|
14
|
+
<form method="post" action="/widgets">
|
15
|
+
</form>
|
16
|
+
</html>
|
17
|
+
HTML
|
18
|
+
lambda { attach_file("Doc", "/some/path") }.should raise_error(Webrat::NotFoundError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should submit empty strings for blank file fields" do
|
22
|
+
with_html <<-HTML
|
23
|
+
<html>
|
24
|
+
<form method="post" action="/widgets">
|
25
|
+
<input type="file" id="widget_file" name="widget[file]" />
|
26
|
+
<input type="submit" />
|
27
|
+
</form>
|
28
|
+
</html>
|
29
|
+
HTML
|
30
|
+
webrat_session.should_receive(:post).with("/widgets", { "widget" => { "file" => "" } })
|
31
|
+
click_button
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should submit the attached file" do
|
35
|
+
with_html <<-HTML
|
36
|
+
<html>
|
37
|
+
<form method="post" action="/widgets">
|
38
|
+
<label for="widget_file">Document</label>
|
39
|
+
<input type="file" id="widget_file" name="widget[file]" />
|
40
|
+
<input type="submit" />
|
41
|
+
</form>
|
42
|
+
</html>
|
43
|
+
HTML
|
44
|
+
webrat_session.should_receive(:post).with("/widgets", { "widget" => { "file" => @uploaded_file } })
|
45
|
+
attach_file "Document", @filename
|
46
|
+
click_button
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should support collections" do
|
50
|
+
with_html <<-HTML
|
51
|
+
<html>
|
52
|
+
<form method="post" action="/widgets">
|
53
|
+
<label for="widget_file1">Document</label>
|
54
|
+
<input type="file" id="widget_file1" name="widget[files][]" />
|
55
|
+
<label for="widget_file2">Spreadsheet</label>
|
56
|
+
<input type="file" id="widget_file2" name="widget[files][]" />
|
57
|
+
<input type="submit" />
|
58
|
+
</form>
|
59
|
+
</html>
|
60
|
+
HTML
|
61
|
+
webrat_session.should_receive(:post).with("/widgets", { "widget" => { "files" => [@uploaded_file, @uploaded_file] } })
|
62
|
+
attach_file "Document", @filename
|
63
|
+
attach_file "Spreadsheet", @filename
|
64
|
+
click_button
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should allow the content type to be specified" do
|
68
|
+
with_html <<-HTML
|
69
|
+
<html>
|
70
|
+
<form method="post" action="/widgets">
|
71
|
+
<label for="person_picture">Picture</label>
|
72
|
+
<input type="file" id="person_picture" name="person[picture]" />
|
73
|
+
<input type="submit" />
|
74
|
+
</form>
|
75
|
+
</html>
|
76
|
+
HTML
|
77
|
+
ActionController::TestUploadedFile.should_receive(:new).with(@filename, "image/png").any_number_of_times
|
78
|
+
attach_file "Picture", @filename, "image/png"
|
79
|
+
click_button
|
80
|
+
end
|
81
|
+
end
|
@@ -1,86 +1,86 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
-
|
3
|
-
describe Webrat::RailsAdapter do
|
4
|
-
before :each do
|
5
|
-
Webrat.configuration.mode = :rails
|
6
|
-
@integration_session = mock("integration_session")
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should delegate response_body to the session response body" do
|
10
|
-
@integration_session.stub!(:response => mock("response", :body => "<html>"))
|
11
|
-
Webrat::RailsAdapter.new(@integration_session).response_body.should == "<html>"
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should delegate response_code to the session response code" do
|
15
|
-
@integration_session.stub!(:response => mock("response", :code => "42"))
|
16
|
-
Webrat::RailsAdapter.new(@integration_session).response_code.should == 42
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should delegate get to the integration session" do
|
20
|
-
@integration_session.should_receive(:get).with("url", "data", "headers")
|
21
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
22
|
-
rails_session.get("url", "data", "headers")
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should delegate post to the integration session" do
|
26
|
-
@integration_session.should_receive(:post).with("url", "data", "headers")
|
27
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
28
|
-
rails_session.post("url", "data", "headers")
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should delegate put to the integration session" do
|
32
|
-
@integration_session.should_receive(:put).with("url", "data", "headers")
|
33
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
34
|
-
rails_session.put("url", "data", "headers")
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should delegate delete to the integration session" do
|
38
|
-
@integration_session.should_receive(:delete).with("url", "data", "headers")
|
39
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
40
|
-
rails_session.delete("url", "data", "headers")
|
41
|
-
end
|
42
|
-
|
43
|
-
context "the URL is a full path" do
|
44
|
-
it "should pass the full url" do
|
45
|
-
@integration_session.stub!(:https!)
|
46
|
-
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
47
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
48
|
-
rails_session.get("http://www.example.com/url", "data", "headers")
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "the URL is https://" do
|
53
|
-
it "should call #https! with true before the request before passing along the full url" do
|
54
|
-
@integration_session.should_receive(:https!).with(true)
|
55
|
-
@integration_session.should_receive(:get).with("https://www.example.com/url", "data", "headers")
|
56
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
57
|
-
rails_session.get("https://www.example.com/url", "data", "headers")
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "the URL is http://" do
|
62
|
-
it "should call #https! with true before the request" do
|
63
|
-
@integration_session.stub!(:get)
|
64
|
-
@integration_session.should_receive(:https!).with(false)
|
65
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
66
|
-
rails_session.get("http://www.example.com/url", "data", "headers")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "the URL include an anchor" do
|
71
|
-
it "should strip out the anchor" do
|
72
|
-
@integration_session.should_receive(:https!).with(false)
|
73
|
-
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
74
|
-
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
75
|
-
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should provide a saved_page_dir" do
|
80
|
-
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:saved_page_dir)
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should provide a doc_root" do
|
84
|
-
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:doc_root)
|
85
|
-
end
|
86
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Webrat::RailsAdapter do
|
4
|
+
before :each do
|
5
|
+
Webrat.configuration.mode = :rails
|
6
|
+
@integration_session = mock("integration_session")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should delegate response_body to the session response body" do
|
10
|
+
@integration_session.stub!(:response => mock("response", :body => "<html>"))
|
11
|
+
Webrat::RailsAdapter.new(@integration_session).response_body.should == "<html>"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should delegate response_code to the session response code" do
|
15
|
+
@integration_session.stub!(:response => mock("response", :code => "42"))
|
16
|
+
Webrat::RailsAdapter.new(@integration_session).response_code.should == 42
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should delegate get to the integration session" do
|
20
|
+
@integration_session.should_receive(:get).with("url", "data", "headers")
|
21
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
22
|
+
rails_session.get("url", "data", "headers")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should delegate post to the integration session" do
|
26
|
+
@integration_session.should_receive(:post).with("url", "data", "headers")
|
27
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
28
|
+
rails_session.post("url", "data", "headers")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should delegate put to the integration session" do
|
32
|
+
@integration_session.should_receive(:put).with("url", "data", "headers")
|
33
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
34
|
+
rails_session.put("url", "data", "headers")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should delegate delete to the integration session" do
|
38
|
+
@integration_session.should_receive(:delete).with("url", "data", "headers")
|
39
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
40
|
+
rails_session.delete("url", "data", "headers")
|
41
|
+
end
|
42
|
+
|
43
|
+
context "the URL is a full path" do
|
44
|
+
it "should pass the full url" do
|
45
|
+
@integration_session.stub!(:https!)
|
46
|
+
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
47
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
48
|
+
rails_session.get("http://www.example.com/url", "data", "headers")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "the URL is https://" do
|
53
|
+
it "should call #https! with true before the request before passing along the full url" do
|
54
|
+
@integration_session.should_receive(:https!).with(true)
|
55
|
+
@integration_session.should_receive(:get).with("https://www.example.com/url", "data", "headers")
|
56
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
57
|
+
rails_session.get("https://www.example.com/url", "data", "headers")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "the URL is http://" do
|
62
|
+
it "should call #https! with true before the request" do
|
63
|
+
@integration_session.stub!(:get)
|
64
|
+
@integration_session.should_receive(:https!).with(false)
|
65
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
66
|
+
rails_session.get("http://www.example.com/url", "data", "headers")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "the URL include an anchor" do
|
71
|
+
it "should strip out the anchor" do
|
72
|
+
@integration_session.should_receive(:https!).with(false)
|
73
|
+
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
74
|
+
rails_session = Webrat::RailsAdapter.new(@integration_session)
|
75
|
+
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should provide a saved_page_dir" do
|
80
|
+
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:saved_page_dir)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should provide a doc_root" do
|
84
|
+
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:doc_root)
|
85
|
+
end
|
86
|
+
end
|
@@ -1,26 +1,26 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
|
2
|
-
require "webrat/selenium/application_servers/rails"
|
3
|
-
|
4
|
-
RAILS_ROOT = "." unless defined?(RAILS_ROOT)
|
5
|
-
|
6
|
-
describe Webrat::Selenium::ApplicationServers::Rails do
|
7
|
-
include Webrat::Selenium::SilenceStream
|
8
|
-
|
9
|
-
before do
|
10
|
-
@server = Webrat::Selenium::ApplicationServers::Rails.new
|
11
|
-
# require "rubygems"; require "ruby-debug"; Debugger.start; debugger
|
12
|
-
@server.stub!(:system)
|
13
|
-
@server.stub!(:at_exit)
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "boot" do
|
17
|
-
it "should wait for the server to start on 0.0.0.0" do
|
18
|
-
TCPSocket.should_receive(:wait_for_service_with_timeout).
|
19
|
-
with(hash_including(:host => "0.0.0.0"))
|
20
|
-
|
21
|
-
silence_stream(STDERR) do
|
22
|
-
@server.boot
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
|
2
|
+
require "webrat/selenium/application_servers/rails"
|
3
|
+
|
4
|
+
RAILS_ROOT = "." unless defined?(RAILS_ROOT)
|
5
|
+
|
6
|
+
describe Webrat::Selenium::ApplicationServers::Rails do
|
7
|
+
include Webrat::Selenium::SilenceStream
|
8
|
+
|
9
|
+
before do
|
10
|
+
@server = Webrat::Selenium::ApplicationServers::Rails.new
|
11
|
+
# require "rubygems"; require "ruby-debug"; Debugger.start; debugger
|
12
|
+
@server.stub!(:system)
|
13
|
+
@server.stub!(:at_exit)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "boot" do
|
17
|
+
it "should wait for the server to start on 0.0.0.0" do
|
18
|
+
TCPSocket.should_receive(:wait_for_service_with_timeout).
|
19
|
+
with(hash_including(:host => "0.0.0.0"))
|
20
|
+
|
21
|
+
silence_stream(STDERR) do
|
22
|
+
@server.boot
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,24 +1,24 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
describe "Basic Auth HTTP headers" do
|
4
|
-
before do
|
5
|
-
basic_auth('user', 'secret')
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should be present in visit" do
|
9
|
-
webrat_session.should_receive(:get).with("/", {}, {'HTTP_AUTHORIZATION' => "Basic dXNlcjpzZWNyZXQ=\n"})
|
10
|
-
visit("/")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should be present in form submits" do
|
14
|
-
with_html <<-HTML
|
15
|
-
<html>
|
16
|
-
<form method="post" action="/form1">
|
17
|
-
<input type="submit" />
|
18
|
-
</form>
|
19
|
-
</html>
|
20
|
-
HTML
|
21
|
-
webrat_session.should_receive(:post).with("/form1", {}, {'HTTP_AUTHORIZATION' => "Basic dXNlcjpzZWNyZXQ=\n"})
|
22
|
-
click_button
|
23
|
-
end
|
24
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe "Basic Auth HTTP headers" do
|
4
|
+
before do
|
5
|
+
basic_auth('user', 'secret')
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should be present in visit" do
|
9
|
+
webrat_session.should_receive(:get).with("/", {}, {'HTTP_AUTHORIZATION' => "Basic dXNlcjpzZWNyZXQ=\n"})
|
10
|
+
visit("/")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be present in form submits" do
|
14
|
+
with_html <<-HTML
|
15
|
+
<html>
|
16
|
+
<form method="post" action="/form1">
|
17
|
+
<input type="submit" />
|
18
|
+
</form>
|
19
|
+
</html>
|
20
|
+
HTML
|
21
|
+
webrat_session.should_receive(:post).with("/form1", {}, {'HTTP_AUTHORIZATION' => "Basic dXNlcjpzZWNyZXQ=\n"})
|
22
|
+
click_button
|
23
|
+
end
|
24
|
+
end
|