integrity 0.1.8 → 0.1.9
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/README.markdown +7 -0
- data/Rakefile +59 -132
- data/VERSION.yml +1 -1
- data/config/config.ru +29 -0
- data/config/config.sample.ru +6 -16
- data/config/config.sample.yml +15 -12
- data/config/config.yml +34 -0
- data/lib/integrity.rb +13 -13
- data/lib/integrity/app.rb +138 -0
- data/lib/integrity/author.rb +39 -0
- data/lib/integrity/build.rb +54 -31
- data/lib/integrity/commit.rb +71 -0
- data/lib/integrity/helpers.rb +3 -3
- data/lib/integrity/helpers/authorization.rb +2 -2
- data/lib/integrity/helpers/forms.rb +3 -3
- data/lib/integrity/helpers/pretty_output.rb +1 -1
- data/lib/integrity/helpers/rendering.rb +6 -1
- data/lib/integrity/helpers/resources.rb +9 -3
- data/lib/integrity/helpers/urls.rb +15 -13
- data/lib/integrity/installer.rb +45 -56
- data/lib/integrity/migrations.rb +31 -48
- data/lib/integrity/notifier.rb +14 -16
- data/lib/integrity/notifier/base.rb +29 -19
- data/lib/integrity/notifier/test_helpers.rb +100 -0
- data/lib/integrity/project.rb +69 -33
- data/lib/integrity/project_builder.rb +23 -14
- data/lib/integrity/scm/git.rb +15 -14
- data/lib/integrity/scm/git/uri.rb +9 -9
- data/test/acceptance/api_test.rb +97 -0
- data/test/acceptance/browse_project_builds_test.rb +65 -0
- data/test/acceptance/browse_project_test.rb +95 -0
- data/test/acceptance/build_notifications_test.rb +42 -0
- data/test/acceptance/create_project_test.rb +97 -0
- data/test/acceptance/delete_project_test.rb +53 -0
- data/test/acceptance/edit_project_test.rb +117 -0
- data/test/acceptance/error_page_test.rb +18 -0
- data/test/acceptance/helpers.rb +2 -0
- data/test/acceptance/installer_test.rb +62 -0
- data/test/acceptance/manual_build_project_test.rb +82 -0
- data/test/acceptance/notifier_test.rb +109 -0
- data/test/acceptance/project_syndication_test.rb +30 -0
- data/test/acceptance/stylesheet_test.rb +18 -0
- data/test/helpers.rb +59 -26
- data/test/helpers/acceptance.rb +19 -65
- data/test/helpers/acceptance/email_notifier.rb +55 -0
- data/test/helpers/acceptance/git_helper.rb +15 -15
- data/test/helpers/acceptance/textfile_notifier.rb +3 -3
- data/test/helpers/expectations.rb +0 -1
- data/test/helpers/expectations/be_a.rb +4 -4
- data/test/helpers/expectations/change.rb +5 -5
- data/test/helpers/expectations/have.rb +4 -4
- data/test/helpers/expectations/predicates.rb +4 -4
- data/test/helpers/fixtures.rb +44 -18
- data/test/helpers/initial_migration_fixture.sql +44 -0
- data/test/unit/build_test.rb +51 -0
- data/test/unit/commit_test.rb +83 -0
- data/test/unit/helpers_test.rb +56 -0
- data/test/unit/integrity_test.rb +18 -0
- data/test/unit/migrations_test.rb +56 -0
- data/test/unit/notifier_test.rb +123 -0
- data/test/unit/project_builder_test.rb +108 -0
- data/test/unit/project_test.rb +282 -0
- data/test/unit/scm_test.rb +54 -0
- data/vendor/webrat/History.txt +306 -0
- data/vendor/webrat/MIT-LICENSE.txt +19 -0
- data/vendor/webrat/README.rdoc +85 -0
- data/vendor/webrat/Rakefile +151 -0
- data/vendor/webrat/install.rb +1 -0
- data/vendor/webrat/lib/webrat.rb +34 -0
- data/vendor/webrat/lib/webrat/core.rb +14 -0
- data/vendor/webrat/lib/webrat/core/configuration.rb +98 -0
- data/vendor/webrat/lib/webrat/core/elements/area.rb +31 -0
- data/vendor/webrat/lib/webrat/core/elements/element.rb +33 -0
- data/vendor/webrat/lib/webrat/core/elements/field.rb +403 -0
- data/vendor/webrat/lib/webrat/core/elements/form.rb +103 -0
- data/vendor/webrat/lib/webrat/core/elements/label.rb +31 -0
- data/vendor/webrat/lib/webrat/core/elements/link.rb +90 -0
- data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -0
- data/vendor/webrat/lib/webrat/core/locators.rb +20 -0
- data/vendor/webrat/lib/webrat/core/locators/area_locator.rb +38 -0
- data/vendor/webrat/lib/webrat/core/locators/button_locator.rb +54 -0
- data/vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
- data/vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
- data/vendor/webrat/lib/webrat/core/locators/field_locator.rb +25 -0
- data/vendor/webrat/lib/webrat/core/locators/field_named_locator.rb +41 -0
- data/vendor/webrat/lib/webrat/core/locators/form_locator.rb +19 -0
- data/vendor/webrat/lib/webrat/core/locators/label_locator.rb +34 -0
- data/vendor/webrat/lib/webrat/core/locators/link_locator.rb +66 -0
- data/vendor/webrat/lib/webrat/core/locators/locator.rb +20 -0
- data/vendor/webrat/lib/webrat/core/locators/select_option_locator.rb +59 -0
- data/vendor/webrat/lib/webrat/core/logging.rb +21 -0
- data/vendor/webrat/lib/webrat/core/matchers.rb +4 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_content.rb +73 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_selector.rb +74 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_tag.rb +21 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_xpath.rb +147 -0
- data/vendor/webrat/lib/webrat/core/methods.rb +61 -0
- data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
- data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +50 -0
- data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
- data/vendor/webrat/lib/webrat/core/session.rb +281 -0
- data/vendor/webrat/lib/webrat/core/xml.rb +115 -0
- data/vendor/webrat/lib/webrat/core/xml/hpricot.rb +19 -0
- data/vendor/webrat/lib/webrat/core/xml/nokogiri.rb +76 -0
- data/vendor/webrat/lib/webrat/core/xml/rexml.rb +24 -0
- data/vendor/webrat/lib/webrat/core_extensions/blank.rb +58 -0
- data/vendor/webrat/lib/webrat/core_extensions/deprecate.rb +8 -0
- data/vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb +12 -0
- data/vendor/webrat/lib/webrat/core_extensions/meta_class.rb +6 -0
- data/vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb +5 -0
- data/vendor/webrat/lib/webrat/mechanize.rb +74 -0
- data/vendor/webrat/lib/webrat/merb.rb +9 -0
- data/vendor/webrat/lib/webrat/merb_session.rb +65 -0
- data/vendor/webrat/lib/webrat/rack.rb +24 -0
- data/vendor/webrat/lib/webrat/rails.rb +105 -0
- data/vendor/webrat/lib/webrat/rspec-rails.rb +13 -0
- data/vendor/webrat/lib/webrat/selenium.rb +154 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +12 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js +9 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
- data/vendor/webrat/lib/webrat/selenium/matchers.rb +4 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_content.rb +66 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb +49 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb +72 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +247 -0
- data/vendor/webrat/lib/webrat/sinatra.rb +44 -0
- data/vendor/webrat/spec/fakes/test_session.rb +34 -0
- data/vendor/webrat/spec/integration/merb/Rakefile +35 -0
- data/vendor/webrat/spec/integration/merb/app/controllers/application.rb +2 -0
- data/vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb +13 -0
- data/vendor/webrat/spec/integration/merb/app/controllers/testing.rb +18 -0
- data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
- data/vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb +12 -0
- data/vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
- data/vendor/webrat/spec/integration/merb/config/environments/development.rb +15 -0
- data/vendor/webrat/spec/integration/merb/config/environments/rake.rb +11 -0
- data/vendor/webrat/spec/integration/merb/config/environments/test.rb +14 -0
- data/vendor/webrat/spec/integration/merb/config/init.rb +25 -0
- data/vendor/webrat/spec/integration/merb/config/rack.rb +11 -0
- data/vendor/webrat/spec/integration/merb/config/router.rb +33 -0
- data/vendor/webrat/spec/integration/merb/spec/spec.opts +1 -0
- data/vendor/webrat/spec/integration/merb/spec/spec_helper.rb +24 -0
- data/vendor/webrat/spec/integration/merb/spec/webrat_spec.rb +32 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
- data/vendor/webrat/spec/integration/rails/Rakefile +30 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/application.rb +15 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +39 -0
- data/vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
- data/vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
- data/vendor/webrat/spec/integration/rails/config/boot.rb +109 -0
- data/vendor/webrat/spec/integration/rails/config/environment.rb +12 -0
- data/vendor/webrat/spec/integration/rails/config/environments/development.rb +17 -0
- data/vendor/webrat/spec/integration/rails/config/environments/selenium.rb +22 -0
- data/vendor/webrat/spec/integration/rails/config/environments/test.rb +22 -0
- data/vendor/webrat/spec/integration/rails/config/initializers/inflections.rb +10 -0
- data/vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb +5 -0
- data/vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
- data/vendor/webrat/spec/integration/rails/config/locales/en.yml +5 -0
- data/vendor/webrat/spec/integration/rails/config/routes.rb +14 -0
- data/vendor/webrat/spec/integration/rails/public/404.html +30 -0
- data/vendor/webrat/spec/integration/rails/public/422.html +30 -0
- data/vendor/webrat/spec/integration/rails/public/500.html +33 -0
- data/vendor/webrat/spec/integration/rails/script/about +4 -0
- data/vendor/webrat/spec/integration/rails/script/console +3 -0
- data/vendor/webrat/spec/integration/rails/script/dbconsole +3 -0
- data/vendor/webrat/spec/integration/rails/script/destroy +3 -0
- data/vendor/webrat/spec/integration/rails/script/generate +3 -0
- data/vendor/webrat/spec/integration/rails/script/performance/benchmarker +3 -0
- data/vendor/webrat/spec/integration/rails/script/performance/profiler +3 -0
- data/vendor/webrat/spec/integration/rails/script/performance/request +3 -0
- data/vendor/webrat/spec/integration/rails/script/plugin +3 -0
- data/vendor/webrat/spec/integration/rails/script/process/inspector +3 -0
- data/vendor/webrat/spec/integration/rails/script/process/reaper +3 -0
- data/vendor/webrat/spec/integration/rails/script/process/spawner +3 -0
- data/vendor/webrat/spec/integration/rails/script/runner +3 -0
- data/vendor/webrat/spec/integration/rails/script/server +3 -0
- data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +80 -0
- data/vendor/webrat/spec/integration/rails/test/test_helper.rb +25 -0
- data/vendor/webrat/spec/integration/sinatra/Rakefile +5 -0
- data/vendor/webrat/spec/integration/sinatra/classic_app.rb +64 -0
- data/vendor/webrat/spec/integration/sinatra/modular_app.rb +16 -0
- data/vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb +37 -0
- data/vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb +18 -0
- data/vendor/webrat/spec/integration/sinatra/test/test_helper.rb +16 -0
- data/vendor/webrat/spec/private/core/configuration_spec.rb +104 -0
- data/vendor/webrat/spec/private/core/field_spec.rb +67 -0
- data/vendor/webrat/spec/private/core/link_spec.rb +24 -0
- data/vendor/webrat/spec/private/core/logging_spec.rb +10 -0
- data/vendor/webrat/spec/private/core/session_spec.rb +198 -0
- data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
- data/vendor/webrat/spec/private/merb/merb_session_spec.rb +42 -0
- data/vendor/webrat/spec/private/nokogiri_spec.rb +77 -0
- data/vendor/webrat/spec/private/rails/attaches_file_spec.rb +81 -0
- data/vendor/webrat/spec/private/rails/rails_session_spec.rb +110 -0
- data/vendor/webrat/spec/private/selenium/selenium_session_spec.rb +44 -0
- data/vendor/webrat/spec/private/selenium/selenium_spec.rb +109 -0
- data/vendor/webrat/spec/public/basic_auth_spec.rb +24 -0
- data/vendor/webrat/spec/public/check_spec.rb +191 -0
- data/vendor/webrat/spec/public/choose_spec.rb +118 -0
- data/vendor/webrat/spec/public/click_area_spec.rb +106 -0
- data/vendor/webrat/spec/public/click_button_spec.rb +502 -0
- data/vendor/webrat/spec/public/click_link_spec.rb +469 -0
- data/vendor/webrat/spec/public/fill_in_spec.rb +209 -0
- data/vendor/webrat/spec/public/locators/field_by_xpath_spec.rb +19 -0
- data/vendor/webrat/spec/public/locators/field_labeled_spec.rb +157 -0
- data/vendor/webrat/spec/public/locators/field_with_id_spec.rb +16 -0
- data/vendor/webrat/spec/public/matchers/contain_spec.rb +114 -0
- data/vendor/webrat/spec/public/matchers/have_selector_spec.rb +135 -0
- data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
- data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +123 -0
- data/vendor/webrat/spec/public/reload_spec.rb +10 -0
- data/vendor/webrat/spec/public/save_and_open_spec.rb +51 -0
- data/vendor/webrat/spec/public/select_date_spec.rb +88 -0
- data/vendor/webrat/spec/public/select_datetime_spec.rb +106 -0
- data/vendor/webrat/spec/public/select_spec.rb +246 -0
- data/vendor/webrat/spec/public/select_time_spec.rb +79 -0
- data/vendor/webrat/spec/public/set_hidden_field_spec.rb +5 -0
- data/vendor/webrat/spec/public/submit_form_spec.rb +5 -0
- data/vendor/webrat/spec/public/visit_spec.rb +58 -0
- data/vendor/webrat/spec/public/within_spec.rb +177 -0
- data/vendor/webrat/spec/rcov.opts +1 -0
- data/vendor/webrat/spec/spec.opts +2 -0
- data/vendor/webrat/spec/spec_helper.rb +50 -0
- data/vendor/webrat/vendor/selenium-server.jar +0 -0
- data/views/_commit_info.haml +24 -0
- data/views/build.haml +2 -2
- data/views/error.haml +4 -3
- data/views/home.haml +3 -5
- data/views/integrity.sass +19 -6
- data/views/new.haml +6 -6
- data/views/project.builder +9 -9
- data/views/project.haml +14 -12
- metadata +319 -124
- data/app.rb +0 -138
- data/integrity.gemspec +0 -76
- data/lib/integrity/core_ext/string.rb +0 -5
- data/test/helpers/expectations/have_tag.rb +0 -128
- data/views/_build_info.haml +0 -18
|
@@ -0,0 +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
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
2
|
+
|
|
3
|
+
require "webrat/rails"
|
|
4
|
+
|
|
5
|
+
describe Webrat::RailsSession do
|
|
6
|
+
before :each do
|
|
7
|
+
Webrat.configuration.mode = :rails
|
|
8
|
+
@integration_session = mock("integration_session")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should delegate response_body to the session response body" do
|
|
12
|
+
@integration_session.stub!(:response => mock("response", :body => "<html>"))
|
|
13
|
+
Webrat::RailsSession.new(@integration_session).response_body.should == "<html>"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should delegate response_code to the session response code" do
|
|
17
|
+
@integration_session.stub!(:response => mock("response", :code => "42"))
|
|
18
|
+
Webrat::RailsSession.new(@integration_session).response_code.should == 42
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should delegate get to the integration session" do
|
|
22
|
+
@integration_session.should_receive(:get).with("url", "data", "headers")
|
|
23
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
24
|
+
rails_session.get("url", "data", "headers")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should delegate post to the integration session" do
|
|
28
|
+
@integration_session.should_receive(:post).with("url", "data", "headers")
|
|
29
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
30
|
+
rails_session.post("url", "data", "headers")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should delegate put to the integration session" do
|
|
34
|
+
@integration_session.should_receive(:put).with("url", "data", "headers")
|
|
35
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
36
|
+
rails_session.put("url", "data", "headers")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should delegate delete to the integration session" do
|
|
40
|
+
@integration_session.should_receive(:delete).with("url", "data", "headers")
|
|
41
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
42
|
+
rails_session.delete("url", "data", "headers")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context "the URL is a full path" do
|
|
46
|
+
it "should pass the full url" do
|
|
47
|
+
@integration_session.stub!(:https!)
|
|
48
|
+
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
|
49
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
50
|
+
rails_session.get("http://www.example.com/url", "data", "headers")
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context "the URL is https://" do
|
|
55
|
+
it "should call #https! with true before the request before passing along the full url" do
|
|
56
|
+
@integration_session.should_receive(:https!).with(true)
|
|
57
|
+
@integration_session.should_receive(:get).with("https://www.example.com/url", "data", "headers")
|
|
58
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
59
|
+
rails_session.get("https://www.example.com/url", "data", "headers")
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "the URL is http://" do
|
|
64
|
+
it "should call #https! with true before the request" do
|
|
65
|
+
@integration_session.stub!(:get)
|
|
66
|
+
@integration_session.should_receive(:https!).with(false)
|
|
67
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
68
|
+
rails_session.get("http://www.example.com/url", "data", "headers")
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
context "the URL include an anchor" do
|
|
73
|
+
it "should strip out the anchor" do
|
|
74
|
+
@integration_session.should_receive(:https!).with(false)
|
|
75
|
+
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
|
76
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
77
|
+
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should provide a saved_page_dir" do
|
|
82
|
+
Webrat::RailsSession.new(mock("integration session")).should respond_to(:saved_page_dir)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "should provide a doc_root" do
|
|
86
|
+
Webrat::RailsSession.new(mock("integration session")).should respond_to(:doc_root)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should accept an ActiveRecord argument to #within and translate to a selector using dom_id" do
|
|
90
|
+
body = <<-HTML
|
|
91
|
+
<a href="/page1">Edit</a>
|
|
92
|
+
<div id="new_object">
|
|
93
|
+
<a href="/page2">Edit</a>
|
|
94
|
+
</div>
|
|
95
|
+
HTML
|
|
96
|
+
|
|
97
|
+
response = mock("response", :body => body, :headers => {}, :code => 200)
|
|
98
|
+
@integration_session.stub!(:response => response)
|
|
99
|
+
@integration_session.should_receive(:get).with("/page2", {}, nil)
|
|
100
|
+
|
|
101
|
+
rails_session = Webrat::RailsSession.new(@integration_session)
|
|
102
|
+
|
|
103
|
+
object = Object.new
|
|
104
|
+
object.stub!(:id => nil)
|
|
105
|
+
|
|
106
|
+
rails_session.within(object) do
|
|
107
|
+
rails_session.click_link 'Edit'
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
2
|
+
require "action_controller"
|
|
3
|
+
require "action_controller/integration"
|
|
4
|
+
require "webrat/selenium"
|
|
5
|
+
|
|
6
|
+
describe Webrat::SeleniumSession do
|
|
7
|
+
|
|
8
|
+
describe "create browser" do
|
|
9
|
+
|
|
10
|
+
it "should start the local selenium client and set speed to 0 when selenium_server_address is nil" do
|
|
11
|
+
selenium_session = Webrat::SeleniumSession.new
|
|
12
|
+
browser = mock "mock browser"
|
|
13
|
+
::Selenium::Client::Driver.should_receive(:new).with("localhost", Webrat.configuration.selenium_server_port, "*firefox", "http://#{Webrat.configuration.application_address}:#{Webrat.configuration.application_port}").and_return browser
|
|
14
|
+
browser.should_receive(:set_speed).with(0)
|
|
15
|
+
selenium_session.send :create_browser
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should start the remote selenium client when selenium_server_address is set" do
|
|
19
|
+
Webrat.configuration.selenium_server_address = 'foo address'
|
|
20
|
+
selenium_session = Webrat::SeleniumSession.new
|
|
21
|
+
browser = mock "mock browser"
|
|
22
|
+
::Selenium::Client::Driver.should_receive(:new).with(Webrat.configuration.selenium_server_address, Webrat.configuration.selenium_server_port, "*firefox", "http://#{Webrat.configuration.application_address}:#{Webrat.configuration.application_port}").and_return browser
|
|
23
|
+
browser.should_not_receive(:set_speed)
|
|
24
|
+
selenium_session.send :create_browser
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should use the config specifications" do
|
|
28
|
+
Webrat.configuration.selenium_server_port = 'selenium port'
|
|
29
|
+
Webrat.configuration.selenium_server_address = 'selenium address'
|
|
30
|
+
Webrat.configuration.application_port = 'app port'
|
|
31
|
+
Webrat.configuration.application_address = 'app address'
|
|
32
|
+
Webrat.configuration.selenium_browser_key = 'browser key'
|
|
33
|
+
|
|
34
|
+
selenium_session = Webrat::SeleniumSession.new
|
|
35
|
+
browser = mock "mock browser"
|
|
36
|
+
::Selenium::Client::Driver.should_receive(:new).with('selenium address',
|
|
37
|
+
'selenium port', 'browser key',
|
|
38
|
+
"http://app address:app port").and_return browser
|
|
39
|
+
browser.should_not_receive(:set_speed)
|
|
40
|
+
selenium_session.send :create_browser
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
2
|
+
require "action_controller"
|
|
3
|
+
require "action_controller/integration"
|
|
4
|
+
require "webrat/selenium"
|
|
5
|
+
|
|
6
|
+
RAILS_ROOT = "/"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
describe Webrat, "Selenium" do
|
|
10
|
+
describe "start_app_server" do
|
|
11
|
+
after(:each) { Webrat.configuration.application_framework = :rails }
|
|
12
|
+
describe "ruby on rails" do
|
|
13
|
+
it "should start the app server with correct config options" do
|
|
14
|
+
pid_file = "file"
|
|
15
|
+
Webrat.should_receive(:prepare_pid_file).with("#{RAILS_ROOT}/tmp/pids","mongrel_selenium.pid").and_return pid_file
|
|
16
|
+
Webrat.should_receive(:system).with("mongrel_rails start -d --chdir='#{RAILS_ROOT}' --port=#{Webrat.configuration.application_port} --environment=#{Webrat.configuration.application_environment} --pid #{pid_file} &")
|
|
17
|
+
TCPSocket.should_receive(:wait_for_service).with(:host => Webrat.configuration.application_address, :port => Webrat.configuration.application_port.to_i)
|
|
18
|
+
Webrat.start_app_server
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
describe "merb" do
|
|
22
|
+
it "should start the app server with correct config options" do
|
|
23
|
+
Webrat.configuration.application_framework = :merb
|
|
24
|
+
Webrat.should_receive(:system).with("merb -d -p #{Webrat.configuration.application_port} -e #{Webrat.configuration.application_environment}")
|
|
25
|
+
TCPSocket.should_receive(:wait_for_service).with(:host => Webrat.configuration.application_address, :port => Webrat.configuration.application_port.to_i)
|
|
26
|
+
Webrat.start_app_server
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
describe "sinatra" do
|
|
30
|
+
it "should start the app server with correct config options" do
|
|
31
|
+
rackup_file = File.expand_path(Dir.pwd + '/config.ru')
|
|
32
|
+
Webrat.configuration.application_framework = :sinatra
|
|
33
|
+
Webrat.should_receive(:fork)
|
|
34
|
+
# Kernel.should_receive(:exec).with(['rackup', rackup_file, '-p', Webrat.configuration.application_port])
|
|
35
|
+
TCPSocket.should_receive(:wait_for_service).with(:host => Webrat.configuration.application_address, :port => Webrat.configuration.application_port.to_i)
|
|
36
|
+
Webrat.start_app_server
|
|
37
|
+
FileUtils.rm_f 'rack.pid'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
describe "stop_app_server" do
|
|
42
|
+
after(:each) { Webrat.configuration.application_framework = :rails }
|
|
43
|
+
describe "ruby on rails" do
|
|
44
|
+
it "should stop the app server with correct config options" do
|
|
45
|
+
pid_file = RAILS_ROOT+'/tmp/pids/mongrel_selenium.pid'
|
|
46
|
+
Webrat.should_receive(:system).with("mongrel_rails stop -c #{RAILS_ROOT} --pid #{pid_file}")
|
|
47
|
+
Webrat.stop_app_server
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
describe "merb" do
|
|
51
|
+
it "should stop the app server with correct config options" do
|
|
52
|
+
Webrat.configuration.application_framework = :merb
|
|
53
|
+
File.should_receive(:read).with('log/merb.3001.pid').and_return('666')
|
|
54
|
+
Webrat.should_receive(:system).with("kill -9 666")
|
|
55
|
+
Webrat.stop_app_server
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
describe "sinatra" do
|
|
59
|
+
it "should stop the app server with correct config options" do
|
|
60
|
+
Webrat.configuration.application_framework = :sinatra
|
|
61
|
+
File.should_receive(:read).with('rack.pid').and_return('666')
|
|
62
|
+
Webrat.should_receive(:system).with("kill -9 666")
|
|
63
|
+
Webrat.stop_app_server
|
|
64
|
+
FileUtils.rm_f 'rack.pid'
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'prepare_pid_file' do
|
|
70
|
+
File.should_receive(:expand_path).with('path').and_return('full_path')
|
|
71
|
+
FileUtils.should_receive(:mkdir_p).with 'full_path'
|
|
72
|
+
File.should_receive(:expand_path).with('path/name')
|
|
73
|
+
Webrat.prepare_pid_file 'path', 'name'
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "start_selenium_server" do
|
|
77
|
+
it "should not start the local selenium server if the selenium_server_address is set" do
|
|
78
|
+
Webrat.configuration.selenium_server_address = 'foo address'
|
|
79
|
+
::Selenium::RemoteControl::RemoteControl.should_not_receive(:new)
|
|
80
|
+
TCPSocket.should_receive(:wait_for_service).with(:host => Webrat.configuration.selenium_server_address, :port => Webrat.configuration.selenium_server_port)
|
|
81
|
+
Webrat.start_selenium_server
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should start the local selenium server if the selenium_server_address is set" do
|
|
85
|
+
remote_control = mock "selenium remote control"
|
|
86
|
+
::Selenium::RemoteControl::RemoteControl.should_receive(:new).with("0.0.0.0", Webrat.configuration.selenium_server_port, 5).and_return remote_control
|
|
87
|
+
remote_control.should_receive(:jar_file=).with(/selenium-server\.jar/)
|
|
88
|
+
remote_control.should_receive(:start).with(:background => true)
|
|
89
|
+
TCPSocket.should_receive(:wait_for_service).with(:host => "0.0.0.0", :port => Webrat.configuration.selenium_server_port)
|
|
90
|
+
Webrat.start_selenium_server
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "stop_selenium_server" do
|
|
95
|
+
|
|
96
|
+
it "should not attempt to stop the server if the selenium_server_address is set" do
|
|
97
|
+
Webrat.configuration.selenium_server_address = 'foo address'
|
|
98
|
+
::Selenium::RemoteControl::RemoteControl.should_not_receive(:new)
|
|
99
|
+
Webrat.stop_selenium_server
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "should stop the local server is the selenium_server_address is nil" do
|
|
103
|
+
remote_control = mock "selenium remote control"
|
|
104
|
+
::Selenium::RemoteControl::RemoteControl.should_receive(:new).with("0.0.0.0", Webrat.configuration.selenium_server_port, 5).and_return remote_control
|
|
105
|
+
remote_control.should_receive(:stop)
|
|
106
|
+
Webrat.stop_selenium_server
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +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
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe "check" do
|
|
4
|
+
it "should fail if no checkbox found" do
|
|
5
|
+
with_html <<-HTML
|
|
6
|
+
<html>
|
|
7
|
+
<form method="post" action="/login">
|
|
8
|
+
</form>
|
|
9
|
+
</html>
|
|
10
|
+
HTML
|
|
11
|
+
|
|
12
|
+
lambda { check "remember_me" }.should raise_error(Webrat::NotFoundError)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should fail if input is not a checkbox" do
|
|
16
|
+
with_html <<-HTML
|
|
17
|
+
<html>
|
|
18
|
+
<form method="post" action="/login">
|
|
19
|
+
<input type="text" name="remember_me" />
|
|
20
|
+
</form>
|
|
21
|
+
</html>
|
|
22
|
+
HTML
|
|
23
|
+
|
|
24
|
+
lambda { check "remember_me" }.should raise_error(Webrat::NotFoundError)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should check rails style checkboxes" do
|
|
28
|
+
with_html <<-HTML
|
|
29
|
+
<html>
|
|
30
|
+
<form method="get" action="/login">
|
|
31
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" />
|
|
32
|
+
<input name="user[tos]" type="hidden" value="0" />
|
|
33
|
+
<label for="user_tos">TOS</label>
|
|
34
|
+
<input type="submit" />
|
|
35
|
+
</form>
|
|
36
|
+
</html>
|
|
37
|
+
HTML
|
|
38
|
+
|
|
39
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "1"})
|
|
40
|
+
check "TOS"
|
|
41
|
+
click_button
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should result in the value on being posted if not specified" do
|
|
45
|
+
with_html <<-HTML
|
|
46
|
+
<html>
|
|
47
|
+
<form method="post" action="/login">
|
|
48
|
+
<input type="checkbox" name="remember_me" />
|
|
49
|
+
<input type="submit" />
|
|
50
|
+
</form>
|
|
51
|
+
</html>
|
|
52
|
+
HTML
|
|
53
|
+
|
|
54
|
+
webrat_session.should_receive(:post).with("/login", "remember_me" => "on")
|
|
55
|
+
check "remember_me"
|
|
56
|
+
click_button
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should fail if the checkbox is disabled" do
|
|
60
|
+
with_html <<-HTML
|
|
61
|
+
<html>
|
|
62
|
+
<form method="post" action="/login">
|
|
63
|
+
<input type="checkbox" name="remember_me" disabled="disabled" />
|
|
64
|
+
<input type="submit" />
|
|
65
|
+
</form>
|
|
66
|
+
</html>
|
|
67
|
+
HTML
|
|
68
|
+
|
|
69
|
+
lambda { check "remember_me" }.should raise_error(Webrat::DisabledFieldError)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should result in a custom value being posted" do
|
|
73
|
+
with_html <<-HTML
|
|
74
|
+
<html>
|
|
75
|
+
<form method="post" action="/login">
|
|
76
|
+
<input type="checkbox" name="remember_me" value="yes" />
|
|
77
|
+
<input type="submit" />
|
|
78
|
+
</form>
|
|
79
|
+
</html>
|
|
80
|
+
HTML
|
|
81
|
+
|
|
82
|
+
webrat_session.should_receive(:post).with("/login", "remember_me" => "yes")
|
|
83
|
+
check "remember_me"
|
|
84
|
+
click_button
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
describe "uncheck" do
|
|
89
|
+
it "should fail if no checkbox found" do
|
|
90
|
+
with_html <<-HTML
|
|
91
|
+
<html>
|
|
92
|
+
<form method="post" action="/login">
|
|
93
|
+
</form>
|
|
94
|
+
</html>
|
|
95
|
+
HTML
|
|
96
|
+
|
|
97
|
+
lambda { uncheck "remember_me" }.should raise_error(Webrat::NotFoundError)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should fail if input is not a checkbox" do
|
|
101
|
+
with_html <<-HTML
|
|
102
|
+
<html>
|
|
103
|
+
<form method="post" action="/login">
|
|
104
|
+
<input type="text" name="remember_me" />
|
|
105
|
+
</form>
|
|
106
|
+
</html>
|
|
107
|
+
HTML
|
|
108
|
+
|
|
109
|
+
lambda { uncheck "remember_me" }.should raise_error(Webrat::NotFoundError)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should fail if the checkbox is disabled" do
|
|
113
|
+
with_html <<-HTML
|
|
114
|
+
<html>
|
|
115
|
+
<form method="post" action="/login">
|
|
116
|
+
<input type="checkbox" name="remember_me" checked="checked" disabled="disabled" />
|
|
117
|
+
<input type="submit" />
|
|
118
|
+
</form>
|
|
119
|
+
</html>
|
|
120
|
+
HTML
|
|
121
|
+
lambda { uncheck "remember_me" }.should raise_error(Webrat::DisabledFieldError)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "should uncheck rails style checkboxes" do
|
|
125
|
+
with_html <<-HTML
|
|
126
|
+
<html>
|
|
127
|
+
<form method="get" action="/login">
|
|
128
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
|
129
|
+
<input name="user[tos]" type="hidden" value="0" />
|
|
130
|
+
<label for="user_tos">TOS</label>
|
|
131
|
+
<input type="submit" />
|
|
132
|
+
</form>
|
|
133
|
+
</html>
|
|
134
|
+
HTML
|
|
135
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
|
136
|
+
check "TOS"
|
|
137
|
+
uncheck "TOS"
|
|
138
|
+
click_button
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "should result in value not being posted" do
|
|
142
|
+
with_html <<-HTML
|
|
143
|
+
<html>
|
|
144
|
+
<form method="post" action="/login">
|
|
145
|
+
<input type="checkbox" name="remember_me" value="yes" checked="checked" />
|
|
146
|
+
<input type="submit" />
|
|
147
|
+
</form>
|
|
148
|
+
</html>
|
|
149
|
+
HTML
|
|
150
|
+
webrat_session.should_receive(:post).with("/login", {})
|
|
151
|
+
uncheck "remember_me"
|
|
152
|
+
click_button
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "should work with checkboxes with the same name" do
|
|
156
|
+
with_html <<-HTML
|
|
157
|
+
<html>
|
|
158
|
+
<form method="post" action="/login">
|
|
159
|
+
<input id="option_1" name="options[]" type="checkbox" value="1" />
|
|
160
|
+
<label for="option_1">Option 1</label>
|
|
161
|
+
<input id="option_2" name="options[]" type="checkbox" value="2" />
|
|
162
|
+
<label for="option_2">Option 2</label>
|
|
163
|
+
<input type="submit" />
|
|
164
|
+
</form>
|
|
165
|
+
</html>
|
|
166
|
+
HTML
|
|
167
|
+
webrat_session.should_receive(:post).with("/login", {"options" => ["1", "2"]})
|
|
168
|
+
check 'Option 1'
|
|
169
|
+
check 'Option 2'
|
|
170
|
+
click_button
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
it "should uncheck rails style checkboxes nested inside a label" do
|
|
174
|
+
with_html <<-HTML
|
|
175
|
+
<html>
|
|
176
|
+
<form method="get" action="/login">
|
|
177
|
+
<label>
|
|
178
|
+
TOS
|
|
179
|
+
<input name="user[tos]" type="hidden" value="0" />
|
|
180
|
+
<input id="user_tos" name="user[tos]" type="checkbox" value="1" checked="checked" />
|
|
181
|
+
</label>
|
|
182
|
+
<input type="submit" />
|
|
183
|
+
</form>
|
|
184
|
+
</html>
|
|
185
|
+
HTML
|
|
186
|
+
webrat_session.should_receive(:get).with("/login", "user" => {"tos" => "0"})
|
|
187
|
+
uncheck "TOS"
|
|
188
|
+
click_button
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
end
|