winton-sum 0.1.0
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/Capfile +3 -0
- data/MIT-LICENSE +18 -0
- data/README.markdown +55 -0
- data/Rakefile +45 -0
- data/config/database.example.yml +10 -0
- data/config/deploy.example.rb +36 -0
- data/config/externals.yml +18 -0
- data/config/mail.example.yml +32 -0
- data/config/schedule.rb +20 -0
- data/config.ru +3 -0
- data/db/migrate/001_users.rb +22 -0
- data/db/migrate/002_user_emails.rb +15 -0
- data/features/front_page.feature +14 -0
- data/features/read_email.feature +446 -0
- data/features/receive_email.feature +59 -0
- data/features/step_definitions/email.rb +52 -0
- data/features/step_definitions/given.rb +60 -0
- data/features/step_definitions/then.rb +32 -0
- data/features/step_definitions/when.rb +41 -0
- data/features/support/env.rb +27 -0
- data/features/support/helpers.rb +44 -0
- data/features/support/rspec.rb +11 -0
- data/features/support/webrat.rb +3 -0
- data/features/update_user.feature +76 -0
- data/gemspec.rb +45 -0
- data/lib/sum/boot.rb +29 -0
- data/lib/sum/controller/cron.rb +12 -0
- data/lib/sum/controller/front.rb +6 -0
- data/lib/sum/controller/new.rb +15 -0
- data/lib/sum/helper/application.rb +8 -0
- data/lib/sum/helper/cron.rb +12 -0
- data/lib/sum/helper/new.rb +26 -0
- data/lib/sum/model/incoming_mail.rb +89 -0
- data/lib/sum/model/user.rb +286 -0
- data/lib/sum/model/user_email.rb +31 -0
- data/lib/sum/view/email.haml +70 -0
- data/lib/sum/view/field.haml +10 -0
- data/lib/sum/view/form.haml +12 -0
- data/lib/sum/view/front.haml +25 -0
- data/lib/sum/view/layout.haml +26 -0
- data/lib/sum/view/new.haml +15 -0
- data/lib/sum.rb +30 -0
- data/public/image/1.png +0 -0
- data/public/image/2.png +0 -0
- data/public/image/3.png +0 -0
- data/public/image/bg.png +0 -0
- data/public/image/bot.png +0 -0
- data/public/image/facebox/b.png +0 -0
- data/public/image/facebox/bl.png +0 -0
- data/public/image/facebox/br.png +0 -0
- data/public/image/facebox/closelabel.gif +0 -0
- data/public/image/facebox/loading.gif +0 -0
- data/public/image/facebox/tl.png +0 -0
- data/public/image/facebox/tr.png +0 -0
- data/public/image/favicon.png +0 -0
- data/public/image/field_off.png +0 -0
- data/public/image/field_on.png +0 -0
- data/public/image/ribbon.png +0 -0
- data/public/image/screenshot_receive.png +0 -0
- data/public/image/screenshot_send.png +0 -0
- data/public/image/submit.png +0 -0
- data/public/image/top.png +0 -0
- data/public/javascript/facebox.js +319 -0
- data/public/javascript/jquery-1.3.2.js +19 -0
- data/public/javascript/sum.js +9 -0
- data/public/style/facebox.css +95 -0
- data/public/style/ie.css +35 -0
- data/public/style/print.css +30 -0
- data/public/style/screen.css +256 -0
- data/public/style/sum.css +22 -0
- data/public/style/sum.less +135 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +58 -0
- data/spec/sum/model/incoming_mail_spec.rb +106 -0
- data/spec/sum/model/user_spec.rb +171 -0
- data/sum.gemspec +69 -0
- data/vendor/webrat/History.txt +358 -0
- data/vendor/webrat/MIT-LICENSE.txt +19 -0
- data/vendor/webrat/README.rdoc +85 -0
- data/vendor/webrat/Rakefile +200 -0
- data/vendor/webrat/install.rb +1 -0
- data/vendor/webrat/lib/webrat/core/configuration.rb +102 -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 +409 -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 +93 -0
- data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -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 +74 -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/locators.rb +20 -0
- data/vendor/webrat/lib/webrat/core/logging.rb +24 -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/matchers.rb +4 -0
- data/vendor/webrat/lib/webrat/core/methods.rb +63 -0
- data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
- data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +48 -0
- data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
- data/vendor/webrat/lib/webrat/core/session.rb +299 -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/xml.rb +115 -0
- data/vendor/webrat/lib/webrat/core.rb +14 -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/core_extensions/tcp_socket.rb +27 -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_multipart_support.rb +27 -0
- data/vendor/webrat/lib/webrat/merb_session.rb +82 -0
- data/vendor/webrat/lib/webrat/rack.rb +25 -0
- data/vendor/webrat/lib/webrat/rails.rb +106 -0
- data/vendor/webrat/lib/webrat/rspec-rails.rb +10 -0
- data/vendor/webrat/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/base.rb +46 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/rails.rb +44 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers.rb +5 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +19 -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 +12 -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/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/matchers.rb +4 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb +84 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +248 -0
- data/vendor/webrat/lib/webrat/selenium/silence_stream.rb +18 -0
- data/vendor/webrat/lib/webrat/selenium.rb +81 -0
- data/vendor/webrat/lib/webrat/sinatra.rb +11 -0
- data/vendor/webrat/lib/webrat.rb +31 -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 +27 -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/app/views/testing/upload.html.erb +9 -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 +34 -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 +39 -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/rack/Rakefile +5 -0
- data/vendor/webrat/spec/integration/rack/app.rb +73 -0
- data/vendor/webrat/spec/integration/rack/test/helper.rb +20 -0
- data/vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb +62 -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/buttons_controller.rb +7 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb +7 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
- data/vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
- data/vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
- data/vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb +2 -0
- data/vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
- data/vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb +9 -0
- data/vendor/webrat/spec/integration/rails/app/views/links/show.html.erb +5 -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/buttons.html.erb +11 -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 +18 -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/button_click_test.rb +80 -0
- data/vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
- data/vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb +27 -0
- data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +97 -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 +116 -0
- data/vendor/webrat/spec/private/core/field_spec.rb +85 -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 +195 -0
- data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
- data/vendor/webrat/spec/private/merb/attaches_file_spec.rb +93 -0
- data/vendor/webrat/spec/private/merb/merb_session_spec.rb +61 -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 +112 -0
- data/vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb +26 -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 +496 -0
- data/vendor/webrat/spec/public/click_link_spec.rb +511 -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 +172 -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 +142 -0
- data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
- data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +136 -0
- data/vendor/webrat/spec/public/reload_spec.rb +10 -0
- data/vendor/webrat/spec/public/save_and_open_spec.rb +70 -0
- data/vendor/webrat/spec/public/select_date_spec.rb +112 -0
- data/vendor/webrat/spec/public/select_datetime_spec.rb +137 -0
- data/vendor/webrat/spec/public/select_spec.rb +249 -0
- data/vendor/webrat/spec/public/select_time_spec.rb +100 -0
- data/vendor/webrat/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/vendor/webrat/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/vendor/webrat/spec/public/selenium/selenium_session_spec.rb +37 -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
- metadata +554 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
|
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
5
|
+
|
|
6
|
+
<head>
|
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
|
8
|
+
<title>The change you wanted was rejected (422)</title>
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
|
11
|
+
div.dialog {
|
|
12
|
+
width: 25em;
|
|
13
|
+
padding: 0 4em;
|
|
14
|
+
margin: 4em auto 0 auto;
|
|
15
|
+
border: 1px solid #ccc;
|
|
16
|
+
border-right-color: #999;
|
|
17
|
+
border-bottom-color: #999;
|
|
18
|
+
}
|
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
|
20
|
+
</style>
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body>
|
|
24
|
+
<!-- This file lives in public/422.html -->
|
|
25
|
+
<div class="dialog">
|
|
26
|
+
<h1>The change you wanted was rejected.</h1>
|
|
27
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
|
28
|
+
</div>
|
|
29
|
+
</body>
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
|
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
5
|
+
|
|
6
|
+
<head>
|
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
|
8
|
+
<title>We're sorry, but something went wrong (500)</title>
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
|
11
|
+
div.dialog {
|
|
12
|
+
width: 25em;
|
|
13
|
+
padding: 0 4em;
|
|
14
|
+
margin: 4em auto 0 auto;
|
|
15
|
+
border: 1px solid #ccc;
|
|
16
|
+
border-right-color: #999;
|
|
17
|
+
border-bottom-color: #999;
|
|
18
|
+
}
|
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
|
20
|
+
</style>
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body>
|
|
24
|
+
<!-- This file lives in public/500.html -->
|
|
25
|
+
<div class="dialog">
|
|
26
|
+
<h1>We're sorry, but something went wrong.</h1>
|
|
27
|
+
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
|
28
|
+
<p><small>(If you're the administrator of this website, then please read
|
|
29
|
+
the log file "<%=h RAILS_ENV %>.log"
|
|
30
|
+
to find out what went wrong.)</small></p>
|
|
31
|
+
</div>
|
|
32
|
+
</body>
|
|
33
|
+
</html>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ButtonClickTest < ActionController::IntegrationTest
|
|
4
|
+
# <button type="button" ...>
|
|
5
|
+
test "should click button with type button by id" do
|
|
6
|
+
visit buttons_path
|
|
7
|
+
click_button "button_button_id"
|
|
8
|
+
end
|
|
9
|
+
test "should click button with type button by value" do
|
|
10
|
+
visit buttons_path
|
|
11
|
+
click_button "button_button_value"
|
|
12
|
+
end
|
|
13
|
+
test "should click button with type button by html" do
|
|
14
|
+
visit buttons_path
|
|
15
|
+
click_button "button_button_text"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# <button type="submit" ...>
|
|
19
|
+
test "should click button with type submit by id" do
|
|
20
|
+
visit buttons_path
|
|
21
|
+
click_button "button_submit_id"
|
|
22
|
+
end
|
|
23
|
+
test "should click button with type submit by value" do
|
|
24
|
+
visit buttons_path
|
|
25
|
+
click_button "button_submit_value"
|
|
26
|
+
end
|
|
27
|
+
test "should click button with type submit by html" do
|
|
28
|
+
visit buttons_path
|
|
29
|
+
click_button "button_submit_text"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# <button type="image" ...>
|
|
33
|
+
test "should click button with type image by id" do
|
|
34
|
+
visit buttons_path
|
|
35
|
+
click_button "button_image_id"
|
|
36
|
+
end
|
|
37
|
+
test "should click button with type image by value" do
|
|
38
|
+
visit buttons_path
|
|
39
|
+
click_button "button_image_value"
|
|
40
|
+
end
|
|
41
|
+
test "should click button with type image by html" do
|
|
42
|
+
visit buttons_path
|
|
43
|
+
click_button "button_image_text"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# <input type="button" ...>
|
|
47
|
+
test "should click image with type button by id" do
|
|
48
|
+
visit buttons_path
|
|
49
|
+
click_button "input_button_id"
|
|
50
|
+
end
|
|
51
|
+
test "should click input with type button by value" do
|
|
52
|
+
visit buttons_path
|
|
53
|
+
click_button "input_button_value"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# <input type="submit" ...>
|
|
57
|
+
test "should click input with type submit by id" do
|
|
58
|
+
visit buttons_path
|
|
59
|
+
click_button "input_submit_id"
|
|
60
|
+
end
|
|
61
|
+
test "should click input with type submit by value" do
|
|
62
|
+
visit buttons_path
|
|
63
|
+
click_button "input_submit_value"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# <input type="image" ...>
|
|
67
|
+
test "should click input with type image by id" do
|
|
68
|
+
visit buttons_path
|
|
69
|
+
click_button "input_image_id"
|
|
70
|
+
end
|
|
71
|
+
test "should click input with type image by value" do
|
|
72
|
+
visit buttons_path
|
|
73
|
+
click_button "input_image_value"
|
|
74
|
+
end
|
|
75
|
+
test "should click input with type image by alt" do
|
|
76
|
+
visit buttons_path
|
|
77
|
+
click_button "input_image_alt"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class FillInTest < ActionController::IntegrationTest
|
|
4
|
+
test "should fill in text field by name" do
|
|
5
|
+
visit fields_path
|
|
6
|
+
fill_in "field_by_name", :with => "value"
|
|
7
|
+
end
|
|
8
|
+
test "should fill in text field by name, rails naming lh257" do
|
|
9
|
+
visit fields_path
|
|
10
|
+
fill_in "rails[naming]", :with => "value"
|
|
11
|
+
end
|
|
12
|
+
test "should fill in text field by id" do
|
|
13
|
+
visit fields_path
|
|
14
|
+
fill_in "field_by_id", :with => "value"
|
|
15
|
+
end
|
|
16
|
+
test "should fill in text field by label via id" do
|
|
17
|
+
visit fields_path
|
|
18
|
+
fill_in "FieldByLabelId", :with => "value"
|
|
19
|
+
end
|
|
20
|
+
test "should fill in text field by label with special characters" do
|
|
21
|
+
visit fields_path
|
|
22
|
+
fill_in "[Field]:", :with => "value"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class LinkClickTest < ActionController::IntegrationTest
|
|
4
|
+
test "should click link by text" do
|
|
5
|
+
visit links_path
|
|
6
|
+
click_link "LinkByText"
|
|
7
|
+
assert_contain("Link:LinkByText")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "should click link by id" do
|
|
11
|
+
visit links_path
|
|
12
|
+
click_link "link_by_id"
|
|
13
|
+
assert_contain("Link:link_by_id")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test "should click link by title" do
|
|
17
|
+
visit links_path
|
|
18
|
+
click_link "LinkByTitle"
|
|
19
|
+
assert_contain("Link:LinkByTitle")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test "should be able to click links with non letter characters" do
|
|
23
|
+
visit links_path
|
|
24
|
+
click_link "Link With (parens)"
|
|
25
|
+
assert_contain("Link:link_with_parens")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class WebratTest < ActionController::IntegrationTest
|
|
4
|
+
|
|
5
|
+
#Firefox raises a security concern under Selenium
|
|
6
|
+
unless ENV['WEBRAT_INTEGRATION_MODE'] == 'selenium'
|
|
7
|
+
test "should visit fully qualified urls" do
|
|
8
|
+
visit root_url(:host => "chunkybacon.example.com")
|
|
9
|
+
assert_equal "chunkybacon", request.subdomains.first
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "should visit pages" do
|
|
14
|
+
visit root_path
|
|
15
|
+
assert_contain("Webrat Form")
|
|
16
|
+
assert URI.parse(current_url).path, root_path
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "should submit forms" do
|
|
20
|
+
visit root_path
|
|
21
|
+
fill_in "Text field", :with => "Hello"
|
|
22
|
+
check "TOS"
|
|
23
|
+
select "January"
|
|
24
|
+
click_button "Test"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
test "should check the value of a field" do
|
|
28
|
+
visit "/"
|
|
29
|
+
assert field_labeled("Prefilled").value, "text"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "should not carry params through redirects" do
|
|
33
|
+
visit before_redirect_form_path
|
|
34
|
+
fill_in "Text field", :with => "value"
|
|
35
|
+
click_button
|
|
36
|
+
|
|
37
|
+
automate do
|
|
38
|
+
selenium.wait_for_page_to_load
|
|
39
|
+
end
|
|
40
|
+
assert response.body !~ /value/
|
|
41
|
+
assert response.body =~ /custom_param/
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
test "should follow internal redirects" do
|
|
45
|
+
visit internal_redirect_path
|
|
46
|
+
assert !response.redirect?
|
|
47
|
+
assert response.body.include?("OK")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
test "should not follow external redirects" do
|
|
51
|
+
visit external_redirect_path
|
|
52
|
+
assert response.redirect?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
test "should recognize the host header to follow redirects properly" do
|
|
56
|
+
header "Host", "foo.bar"
|
|
57
|
+
visit host_redirect_path
|
|
58
|
+
assert !response.redirect?
|
|
59
|
+
assert response.body.include?("OK")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
test "should click link by text" do
|
|
63
|
+
visit internal_redirect_path
|
|
64
|
+
click_link "Test Link Text"
|
|
65
|
+
assert_contain("Webrat Form")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
test "should click link by id" do
|
|
69
|
+
visit internal_redirect_path
|
|
70
|
+
click_link "link_id"
|
|
71
|
+
assert_contain("Webrat Form")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
test "should be able to assert xpath" do
|
|
75
|
+
visit root_path
|
|
76
|
+
assert_have_xpath "//h1"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
test "should be able to assert selector" do
|
|
80
|
+
visit root_path
|
|
81
|
+
assert_have_selector "h1"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Firefox detects and prevents infinite redirects under Selenium
|
|
85
|
+
unless ENV['WEBRAT_INTEGRATION_MODE'] == 'selenium'
|
|
86
|
+
test "should detect infinite redirects" do
|
|
87
|
+
assert_raises Webrat::InfiniteRedirectError do
|
|
88
|
+
visit infinite_redirect_path
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# test "should be able to assert have tag" do
|
|
94
|
+
# visit root_path
|
|
95
|
+
# assert_have_tag "h1"
|
|
96
|
+
# end
|
|
97
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
|
3
|
+
require 'test_help'
|
|
4
|
+
|
|
5
|
+
# begin
|
|
6
|
+
# require "redgreen"
|
|
7
|
+
# rescue MissingSourceFile
|
|
8
|
+
# end
|
|
9
|
+
|
|
10
|
+
require File.dirname(__FILE__) + "/../../../../lib/webrat"
|
|
11
|
+
|
|
12
|
+
Webrat.configure do |config|
|
|
13
|
+
config.mode = ENV['WEBRAT_INTEGRATION_MODE'].to_sym
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
ActionController::Base.class_eval do
|
|
17
|
+
def perform_action
|
|
18
|
+
perform_action_without_rescue
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
Dispatcher.class_eval do
|
|
22
|
+
def self.failsafe_response(output, status, exception = nil)
|
|
23
|
+
raise exception
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "sinatra"
|
|
3
|
+
|
|
4
|
+
use_in_file_templates!
|
|
5
|
+
|
|
6
|
+
get "/" do
|
|
7
|
+
erb :home
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
get "/go" do
|
|
11
|
+
erb :go
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
get "/internal_redirect" do
|
|
15
|
+
redirect "/"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
get "/external_redirect" do
|
|
19
|
+
redirect "http://google.com"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
post "/go" do
|
|
23
|
+
@user = params[:name]
|
|
24
|
+
@email = params[:email]
|
|
25
|
+
erb :hello
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
__END__
|
|
29
|
+
|
|
30
|
+
@@ layout
|
|
31
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
32
|
+
<html>
|
|
33
|
+
<title>sinatra testing with webrat</title>
|
|
34
|
+
<body>
|
|
35
|
+
<%= yield %>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
38
|
+
|
|
39
|
+
@@ home
|
|
40
|
+
<p> visit <a href="/go">there</a></p>
|
|
41
|
+
|
|
42
|
+
<form>
|
|
43
|
+
<label>
|
|
44
|
+
Prefilled
|
|
45
|
+
<input type="text" name="prefilled" value="text" />
|
|
46
|
+
</label>
|
|
47
|
+
</form>
|
|
48
|
+
|
|
49
|
+
@@ go
|
|
50
|
+
<form method="post" action="/go">
|
|
51
|
+
<div>
|
|
52
|
+
<label for="name">Name</label>
|
|
53
|
+
<input type="text" name="name" id="name">
|
|
54
|
+
</div>
|
|
55
|
+
<div>
|
|
56
|
+
<label for="email">Email</label>
|
|
57
|
+
<input type="text" name="email" id="email">
|
|
58
|
+
</div>
|
|
59
|
+
<input type="submit" value="Submit" />
|
|
60
|
+
</form>
|
|
61
|
+
|
|
62
|
+
@@ hello
|
|
63
|
+
<p>Hello, <%= @user %></p>
|
|
64
|
+
<p>Your email is: <%= @email %></p>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "sinatra/base"
|
|
3
|
+
|
|
4
|
+
class MyModularApp < Sinatra::Default
|
|
5
|
+
get "/" do
|
|
6
|
+
"Hello World"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
get "/redirect_absolute_url" do
|
|
10
|
+
redirect URI.join(request.url, "foo").to_s
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
get "/foo" do
|
|
14
|
+
"spam"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/test_helper"
|
|
2
|
+
require File.dirname(__FILE__) + "/../classic_app"
|
|
3
|
+
|
|
4
|
+
class MyClassicAppTest < Test::Unit::TestCase
|
|
5
|
+
def test_visits_pages
|
|
6
|
+
visit "/"
|
|
7
|
+
assert response_body.include?("visit")
|
|
8
|
+
|
|
9
|
+
click_link "there"
|
|
10
|
+
assert response_body.include?('<form method="post" action="/go">')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_submits_form
|
|
14
|
+
visit "/go"
|
|
15
|
+
fill_in "Name", :with => "World"
|
|
16
|
+
fill_in "Email", :with => "world@example.org"
|
|
17
|
+
click_button "Submit"
|
|
18
|
+
|
|
19
|
+
assert response_body.include?("Hello, World")
|
|
20
|
+
assert response_body.include?("Your email is: world@example.org")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_check_value_of_field
|
|
24
|
+
visit "/"
|
|
25
|
+
assert field_labeled("Prefilled").value, "text"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_follows_internal_redirects
|
|
29
|
+
visit "/internal_redirect"
|
|
30
|
+
assert response_body.include?("visit")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_does_not_follow_external_redirects
|
|
34
|
+
visit "/external_redirect"
|
|
35
|
+
assert response_code == 302
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/test_helper"
|
|
2
|
+
require File.dirname(__FILE__) + "/../modular_app"
|
|
3
|
+
|
|
4
|
+
class MyModularAppTest < Test::Unit::TestCase
|
|
5
|
+
def app
|
|
6
|
+
MyModularApp
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_it_works
|
|
10
|
+
visit "/"
|
|
11
|
+
assert_contain "Hello World"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_redirects
|
|
15
|
+
visit "/redirect_absolute_url"
|
|
16
|
+
assert_equal "spam", response_body
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "test/unit"
|
|
3
|
+
# require "redgreen"
|
|
4
|
+
|
|
5
|
+
require File.dirname(__FILE__) + "/../../../../lib/webrat"
|
|
6
|
+
|
|
7
|
+
Webrat.configure do |config|
|
|
8
|
+
config.mode = :sinatra
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Test::Unit::TestCase
|
|
12
|
+
include Webrat::Methods
|
|
13
|
+
include Webrat::Matchers
|
|
14
|
+
|
|
15
|
+
Webrat::Methods.delegate_to_session :response_code, :response_body
|
|
16
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Webrat::Configuration do
|
|
4
|
+
|
|
5
|
+
Spec::Matchers.define :parse_with_nokogiri do
|
|
6
|
+
match do |config|
|
|
7
|
+
config.parse_with_nokogiri?
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Spec::Matchers.define :open_error_files do
|
|
12
|
+
match do |config|
|
|
13
|
+
config.open_error_files?
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should have a mode" do
|
|
18
|
+
Webrat.configuration.should respond_to(:mode)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should use Nokogiri as the parser by default" do
|
|
22
|
+
config = Webrat::Configuration.new
|
|
23
|
+
config.should parse_with_nokogiri
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should open error files by default" do
|
|
27
|
+
config = Webrat::Configuration.new
|
|
28
|
+
config.should open_error_files
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should detect infinite redirects after 10" do
|
|
32
|
+
config = Webrat::Configuration.new
|
|
33
|
+
config.infinite_redirect_limit.should == 10
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should be configurable with a block" do
|
|
37
|
+
Webrat.configure do |config|
|
|
38
|
+
config.open_error_files = false
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
config = Webrat.configuration
|
|
42
|
+
config.should_not open_error_files
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should be configurable with multiple blocks" do
|
|
46
|
+
Webrat.configure do |config|
|
|
47
|
+
config.open_error_files = false
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
Webrat.configure do |config|
|
|
51
|
+
config.selenium_server_port = 1234
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
config = Webrat.configuration
|
|
55
|
+
config.should_not open_error_files
|
|
56
|
+
config.selenium_server_port.should == 1234
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
[:rails,
|
|
60
|
+
:selenium,
|
|
61
|
+
:rack,
|
|
62
|
+
:sinatra,
|
|
63
|
+
:mechanize].each do |mode|
|
|
64
|
+
it "should require correct lib when in #{mode} mode" do
|
|
65
|
+
config = Webrat::Configuration.new
|
|
66
|
+
config.should_receive(:require).with("webrat/#{mode}")
|
|
67
|
+
config.mode = mode
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should require merb_session when in merb mode" do
|
|
72
|
+
config = Webrat::Configuration.new
|
|
73
|
+
config.should_receive(:require).with("webrat/merb_session")
|
|
74
|
+
config.mode = :merb
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe "Selenium" do
|
|
78
|
+
before :each do
|
|
79
|
+
@config = Webrat::Configuration.new
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should use 'test' as the application environment by default" do
|
|
83
|
+
@config.application_environment.should == :test
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should use 3001 as the application port by default" do
|
|
87
|
+
@config.application_port.should == 3001
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'should default application address to localhost' do
|
|
91
|
+
@config.application_address.should == 'localhost'
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'should default selenium server address to nil' do
|
|
95
|
+
@config.selenium_server_address.should be_nil
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'should default selenium server port to 4444' do
|
|
99
|
+
@config.selenium_server_port.should == 4444
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'should default selenium browser key to *firefox' do
|
|
103
|
+
@config.selenium_browser_key.should == '*firefox'
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it 'should default selenium browser startup timeout to 5 seconds' do
|
|
107
|
+
@config.selenium_browser_startup_timeout.should == 5
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'should allow overriding of the browser startup timeout' do
|
|
111
|
+
@config.selenium_browser_startup_timeout = 10
|
|
112
|
+
@config.selenium_browser_startup_timeout.should == 10
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|