webrat 0.4.4 → 0.4.5
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 +4 -0
- data/.gitignore +15 -0
- data/History.txt +44 -8
- data/Rakefile +80 -66
- data/VERSION +1 -0
- data/lib/webrat.rb +7 -12
- data/lib/webrat/core/configuration.rb +7 -3
- data/lib/webrat/core/elements/area.rb +7 -7
- data/lib/webrat/core/elements/element.rb +11 -11
- data/lib/webrat/core/elements/field.rb +63 -55
- data/lib/webrat/core/elements/form.rb +17 -17
- data/lib/webrat/core/elements/label.rb +6 -6
- data/lib/webrat/core/elements/link.rb +13 -12
- data/lib/webrat/core/elements/select_option.rb +9 -9
- data/lib/webrat/core/locators.rb +2 -2
- data/lib/webrat/core/locators/area_locator.rb +10 -10
- data/lib/webrat/core/locators/button_locator.rb +13 -13
- data/lib/webrat/core/locators/field_by_id_locator.rb +8 -8
- data/lib/webrat/core/locators/field_labeled_locator.rb +11 -11
- data/lib/webrat/core/locators/field_locator.rb +7 -7
- data/lib/webrat/core/locators/field_named_locator.rb +10 -10
- data/lib/webrat/core/locators/form_locator.rb +6 -6
- data/lib/webrat/core/locators/label_locator.rb +9 -9
- data/lib/webrat/core/locators/link_locator.rb +21 -13
- data/lib/webrat/core/locators/locator.rb +5 -5
- data/lib/webrat/core/locators/select_option_locator.rb +11 -11
- data/lib/webrat/core/logging.rb +7 -4
- data/lib/webrat/core/matchers/have_content.rb +12 -12
- data/lib/webrat/core/matchers/have_selector.rb +9 -9
- data/lib/webrat/core/matchers/have_tag.rb +4 -4
- data/lib/webrat/core/matchers/have_xpath.rb +26 -26
- data/lib/webrat/core/methods.rb +13 -11
- data/lib/webrat/core/mime.rb +3 -3
- data/lib/webrat/core/save_and_open_page.rb +14 -16
- data/lib/webrat/core/scope.rb +53 -53
- data/lib/webrat/core/session.rb +23 -14
- data/lib/webrat/core/xml.rb +16 -16
- data/lib/webrat/core/xml/hpricot.rb +3 -3
- data/lib/webrat/core/xml/nokogiri.rb +11 -11
- data/lib/webrat/core/xml/rexml.rb +3 -3
- data/lib/webrat/core_extensions/blank.rb +1 -1
- data/lib/webrat/core_extensions/deprecate.rb +1 -1
- data/lib/webrat/core_extensions/detect_mapped.rb +4 -4
- data/lib/webrat/core_extensions/meta_class.rb +1 -1
- data/lib/webrat/core_extensions/tcp_socket.rb +8 -8
- data/lib/webrat/mechanize.rb +9 -9
- data/lib/webrat/merb.rb +1 -1
- data/lib/webrat/merb_multipart_support.rb +27 -0
- data/lib/webrat/merb_session.rb +39 -24
- data/lib/webrat/rack_test.rb +32 -0
- data/lib/webrat/rails.rb +2 -2
- data/lib/webrat/rspec-rails.rb +3 -6
- data/lib/webrat/selenium.rb +2 -1
- data/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/lib/webrat/selenium/application_servers.rb +5 -0
- data/lib/webrat/selenium/application_servers/base.rb +46 -0
- data/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/lib/webrat/selenium/application_servers/rails.rb +44 -0
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/lib/webrat/selenium/location_strategy_javascript/button.js +14 -7
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +4 -1
- data/lib/webrat/selenium/matchers.rb +1 -1
- data/lib/webrat/selenium/matchers/have_content.rb +4 -4
- data/lib/webrat/selenium/matchers/have_selector.rb +4 -4
- data/lib/webrat/selenium/matchers/have_tag.rb +16 -16
- data/lib/webrat/selenium/matchers/have_xpath.rb +4 -4
- data/lib/webrat/selenium/selenium_rc_server.rb +25 -19
- data/lib/webrat/selenium/selenium_session.rb +24 -17
- data/lib/webrat/selenium/silence_stream.rb +18 -0
- data/spec/fakes/test_session.rb +34 -0
- data/spec/integration/merb/.gitignore +21 -0
- data/spec/integration/merb/Rakefile +35 -0
- data/spec/integration/merb/app/controllers/application.rb +2 -0
- data/spec/integration/merb/app/controllers/exceptions.rb +13 -0
- data/spec/integration/merb/app/controllers/testing.rb +27 -0
- data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
- data/spec/integration/merb/app/views/layout/application.html.erb +12 -0
- data/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
- data/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
- data/spec/integration/merb/config/environments/development.rb +15 -0
- data/spec/integration/merb/config/environments/rake.rb +11 -0
- data/spec/integration/merb/config/environments/test.rb +14 -0
- data/spec/integration/merb/config/init.rb +25 -0
- data/spec/integration/merb/config/rack.rb +11 -0
- data/spec/integration/merb/config/router.rb +34 -0
- data/spec/integration/merb/spec/spec.opts +1 -0
- data/spec/integration/merb/spec/spec_helper.rb +24 -0
- data/spec/integration/merb/spec/webrat_spec.rb +39 -0
- data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
- data/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
- data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
- data/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
- data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
- data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
- data/spec/integration/rack/Rakefile +5 -0
- data/spec/integration/rack/rack_app.rb +16 -0
- data/spec/integration/rack/test/test_helper.rb +20 -0
- data/spec/integration/rack/test/webrat_rack_test.rb +67 -0
- data/spec/integration/rails/.gitignore +3 -0
- data/spec/integration/rails/Rakefile +30 -0
- data/spec/integration/rails/app/controllers/application.rb +15 -0
- data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
- data/spec/integration/rails/app/controllers/links_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
- data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/links_helper.rb +2 -0
- data/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
- data/spec/integration/rails/app/views/fields/show.html.erb +9 -0
- data/spec/integration/rails/app/views/links/show.html.erb +5 -0
- data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
- data/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
- data/spec/integration/rails/config/boot.rb +109 -0
- data/spec/integration/rails/config/environment.rb +12 -0
- data/spec/integration/rails/config/environments/development.rb +17 -0
- data/spec/integration/rails/config/environments/selenium.rb +22 -0
- data/spec/integration/rails/config/environments/test.rb +22 -0
- data/spec/integration/rails/config/initializers/inflections.rb +10 -0
- data/spec/integration/rails/config/initializers/mime_types.rb +5 -0
- data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
- data/spec/integration/rails/config/locales/en.yml +5 -0
- data/spec/integration/rails/config/routes.rb +18 -0
- data/spec/integration/rails/public/404.html +30 -0
- data/spec/integration/rails/public/422.html +30 -0
- data/spec/integration/rails/public/500.html +33 -0
- data/spec/integration/rails/script/about +4 -0
- data/spec/integration/rails/script/console +3 -0
- data/spec/integration/rails/script/dbconsole +3 -0
- data/spec/integration/rails/script/destroy +3 -0
- data/spec/integration/rails/script/generate +3 -0
- data/spec/integration/rails/script/performance/benchmarker +3 -0
- data/spec/integration/rails/script/performance/profiler +3 -0
- data/spec/integration/rails/script/performance/request +3 -0
- data/spec/integration/rails/script/plugin +3 -0
- data/spec/integration/rails/script/process/inspector +3 -0
- data/spec/integration/rails/script/process/reaper +3 -0
- data/spec/integration/rails/script/process/spawner +3 -0
- data/spec/integration/rails/script/runner +3 -0
- data/spec/integration/rails/script/server +3 -0
- data/spec/integration/rails/test/integration/button_click_test.rb +80 -0
- data/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
- data/spec/integration/rails/test/integration/link_click_test.rb +27 -0
- data/spec/integration/rails/test/integration/webrat_test.rb +97 -0
- data/spec/integration/rails/test/test_helper.rb +25 -0
- data/spec/integration/sinatra/Rakefile +5 -0
- data/spec/integration/sinatra/classic_app.rb +64 -0
- data/spec/integration/sinatra/modular_app.rb +16 -0
- data/spec/integration/sinatra/test/classic_app_test.rb +37 -0
- data/spec/integration/sinatra/test/modular_app_test.rb +18 -0
- data/spec/integration/sinatra/test/test_helper.rb +16 -0
- data/spec/private/core/configuration_spec.rb +116 -0
- data/spec/private/core/field_spec.rb +85 -0
- data/spec/private/core/link_spec.rb +24 -0
- data/spec/private/core/logging_spec.rb +10 -0
- data/spec/private/core/session_spec.rb +195 -0
- data/spec/private/mechanize/mechanize_session_spec.rb +81 -0
- data/spec/private/merb/attaches_file_spec.rb +93 -0
- data/spec/private/merb/merb_session_spec.rb +61 -0
- data/spec/private/nokogiri_spec.rb +77 -0
- data/spec/private/rails/attaches_file_spec.rb +81 -0
- data/spec/private/rails/rails_session_spec.rb +110 -0
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -0
- data/spec/public/basic_auth_spec.rb +24 -0
- data/spec/public/check_spec.rb +191 -0
- data/spec/public/choose_spec.rb +118 -0
- data/spec/public/click_area_spec.rb +106 -0
- data/spec/public/click_button_spec.rb +496 -0
- data/spec/public/click_link_spec.rb +511 -0
- data/spec/public/fill_in_spec.rb +209 -0
- data/spec/public/locators/field_by_xpath_spec.rb +19 -0
- data/spec/public/locators/field_labeled_spec.rb +172 -0
- data/spec/public/locators/field_with_id_spec.rb +16 -0
- data/spec/public/matchers/contain_spec.rb +114 -0
- data/spec/public/matchers/have_selector_spec.rb +142 -0
- data/spec/public/matchers/have_tag_spec.rb +39 -0
- data/spec/public/matchers/have_xpath_spec.rb +136 -0
- data/spec/public/reload_spec.rb +10 -0
- data/spec/public/save_and_open_spec.rb +70 -0
- data/spec/public/select_date_spec.rb +112 -0
- data/spec/public/select_datetime_spec.rb +137 -0
- data/spec/public/select_spec.rb +249 -0
- data/spec/public/select_time_spec.rb +100 -0
- data/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/spec/public/selenium/selenium_session_spec.rb +37 -0
- data/spec/public/set_hidden_field_spec.rb +5 -0
- data/spec/public/submit_form_spec.rb +5 -0
- data/spec/public/visit_spec.rb +58 -0
- data/spec/public/within_spec.rb +177 -0
- data/spec/rcov.opts +1 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +50 -0
- data/vendor/selenium-server.jar +0 -0
- data/webrat.gemspec +340 -0
- metadata +248 -33
- data/lib/webrat/selenium/application_server.rb +0 -71
- data/lib/webrat/selenium/merb_application_server.rb +0 -48
- data/lib/webrat/selenium/rails_application_server.rb +0 -42
- data/lib/webrat/selenium/sinatra_application_server.rb +0 -35
data/lib/webrat/core/methods.rb
CHANGED
|
@@ -10,15 +10,19 @@ module Webrat
|
|
|
10
10
|
RUBY
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
def webrat
|
|
15
15
|
webrat_session
|
|
16
16
|
end
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
def webrat_session
|
|
19
|
-
|
|
19
|
+
if Webrat.configuration.mode == :rack_test
|
|
20
|
+
@_webrat_session ||= ::Webrat::RackTestSession.new(rack_test_session)
|
|
21
|
+
else
|
|
22
|
+
@_webrat_session ||= ::Webrat.session_class.new(self)
|
|
23
|
+
end
|
|
20
24
|
end
|
|
21
|
-
|
|
25
|
+
|
|
22
26
|
# all of these methods delegate to the @session, which should
|
|
23
27
|
# be created transparently.
|
|
24
28
|
#
|
|
@@ -31,7 +35,7 @@ module Webrat
|
|
|
31
35
|
:header, :http_accept, :basic_auth,
|
|
32
36
|
:save_and_open_page,
|
|
33
37
|
:fills_in, :fill_in,
|
|
34
|
-
:checks, :check,
|
|
38
|
+
:checks, :check,
|
|
35
39
|
:unchecks, :uncheck,
|
|
36
40
|
:chooses, :choose,
|
|
37
41
|
:selects, :select,
|
|
@@ -47,15 +51,13 @@ module Webrat
|
|
|
47
51
|
:select_option,
|
|
48
52
|
:set_hidden_field, :submit_form,
|
|
49
53
|
:request_page, :current_dom,
|
|
50
|
-
:response_body,
|
|
54
|
+
:response_body,
|
|
51
55
|
:selects_date, :selects_time, :selects_datetime,
|
|
52
56
|
:select_date, :select_time, :select_datetime,
|
|
53
57
|
:field_by_xpath,
|
|
54
58
|
:field_with_id,
|
|
55
59
|
:selenium,
|
|
56
|
-
:simulate, :automate
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
:simulate, :automate,
|
|
61
|
+
:field_named
|
|
60
62
|
end
|
|
61
|
-
end
|
|
63
|
+
end
|
data/lib/webrat/core/mime.rb
CHANGED
|
@@ -2,49 +2,47 @@ module Webrat
|
|
|
2
2
|
module SaveAndOpenPage
|
|
3
3
|
# Saves the page out to RAILS_ROOT/tmp/ and opens it in the default
|
|
4
4
|
# web browser if on OS X. Useful for debugging.
|
|
5
|
-
#
|
|
5
|
+
#
|
|
6
6
|
# Example:
|
|
7
7
|
# save_and_open_page
|
|
8
8
|
def save_and_open_page
|
|
9
9
|
return unless File.exist?(saved_page_dir)
|
|
10
10
|
|
|
11
11
|
filename = "#{saved_page_dir}/webrat-#{Time.now.to_i}.html"
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
File.open(filename, "w") do |f|
|
|
14
14
|
f.write rewrite_css_and_image_references(response_body)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
open_in_browser(filename)
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
def open_in_browser(path) # :nodoc
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
`open #{path}`
|
|
26
|
-
end
|
|
21
|
+
require "launchy"
|
|
22
|
+
Launchy::Browser.run(path)
|
|
23
|
+
rescue LoadError
|
|
24
|
+
warn "Sorry, you need to install launchy to open pages: `gem install launchy`"
|
|
27
25
|
end
|
|
28
|
-
|
|
26
|
+
|
|
29
27
|
def rewrite_css_and_image_references(response_html) # :nodoc:
|
|
30
28
|
return response_html unless doc_root
|
|
31
|
-
response_html.gsub(/"\/(stylesheets|images)/, doc_root + '/\
|
|
29
|
+
response_html.gsub(/("|')\/(stylesheets|images)/, '\1' + doc_root + '/\2')
|
|
32
30
|
end
|
|
33
|
-
|
|
31
|
+
|
|
34
32
|
def saved_page_dir #:nodoc:
|
|
35
33
|
File.expand_path(".")
|
|
36
34
|
end
|
|
37
|
-
|
|
35
|
+
|
|
38
36
|
def doc_root #:nodoc:
|
|
39
37
|
nil
|
|
40
38
|
end
|
|
41
|
-
|
|
39
|
+
|
|
42
40
|
private
|
|
43
41
|
|
|
44
42
|
# accessor for testing
|
|
45
43
|
def ruby_platform
|
|
46
44
|
RUBY_PLATFORM
|
|
47
45
|
end
|
|
48
|
-
|
|
46
|
+
|
|
49
47
|
end
|
|
50
|
-
end
|
|
48
|
+
end
|
data/lib/webrat/core/scope.rb
CHANGED
|
@@ -6,36 +6,36 @@ module Webrat
|
|
|
6
6
|
# An HTML element (link, button, field, etc.) that Webrat expected was not found on the page
|
|
7
7
|
class NotFoundError < WebratError
|
|
8
8
|
end
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
class Scope
|
|
11
11
|
include Logging
|
|
12
12
|
include Locators
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
def self.from_page(session, response, response_body) #:nodoc:
|
|
15
15
|
new(session) do
|
|
16
16
|
@response = response
|
|
17
17
|
@response_body = response_body
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
def self.from_scope(session, scope, selector) #:nodoc:
|
|
22
22
|
new(session) do
|
|
23
23
|
@scope = scope
|
|
24
24
|
@selector = selector
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
attr_reader :session
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
def initialize(session, &block) #:nodoc:
|
|
31
31
|
@session = session
|
|
32
32
|
instance_eval(&block) if block_given?
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
if @selector && scoped_dom.nil?
|
|
35
35
|
raise Webrat::NotFoundError.new("The scope was not found on the page: #{@selector.inspect}")
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
# Verifies an input field or textarea exists on the current page, and stores a value for
|
|
40
40
|
# it which will be sent when the form is submitted.
|
|
41
41
|
#
|
|
@@ -53,7 +53,7 @@ module Webrat
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
webrat_deprecate :fills_in, :fill_in
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
# Verifies that a hidden field exists on the current page and sets
|
|
58
58
|
# the value to that given by the <tt>:to</tt> option.
|
|
59
59
|
#
|
|
@@ -63,7 +63,7 @@ module Webrat
|
|
|
63
63
|
field = locate_field(field_locator, HiddenField)
|
|
64
64
|
field.set(options[:to])
|
|
65
65
|
end
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
# Verifies that an input checkbox exists on the current page and marks it
|
|
68
68
|
# as checked, so that the value will be submitted with the form.
|
|
69
69
|
#
|
|
@@ -74,7 +74,7 @@ module Webrat
|
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
webrat_deprecate :checks, :check
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
# Verifies that an input checkbox exists on the current page and marks it
|
|
79
79
|
# as unchecked, so that the value will not be submitted with the form.
|
|
80
80
|
#
|
|
@@ -85,7 +85,7 @@ module Webrat
|
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
webrat_deprecate :unchecks, :uncheck
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
# Verifies that an input radio button exists on the current page and marks it
|
|
90
90
|
# as checked, so that the value will be submitted with the form.
|
|
91
91
|
#
|
|
@@ -96,7 +96,7 @@ module Webrat
|
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
webrat_deprecate :chooses, :choose
|
|
99
|
-
|
|
99
|
+
|
|
100
100
|
# Verifies that a an option element exists on the current page with the specified
|
|
101
101
|
# text. You can optionally restrict the search to a specific select list by
|
|
102
102
|
# assigning <tt>options[:from]</tt> the value of the select list's name or
|
|
@@ -111,7 +111,7 @@ module Webrat
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
webrat_deprecate :selects, :select
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
DATE_TIME_SUFFIXES = {
|
|
116
116
|
:year => '1i',
|
|
117
117
|
:month => '2i',
|
|
@@ -120,9 +120,9 @@ module Webrat
|
|
|
120
120
|
:minute => '5i'
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
# Verifies that date elements (year, month, day) exist on the current page
|
|
123
|
+
# Verifies that date elements (year, month, day) exist on the current page
|
|
124
124
|
# with the specified values. You can optionally restrict the search to a specific
|
|
125
|
-
# date's elements by assigning <tt>options[:from]</tt> the value of the date's
|
|
125
|
+
# date's elements by assigning <tt>options[:from]</tt> the value of the date's
|
|
126
126
|
# label. Selects all the date elements with date provided. The date provided may
|
|
127
127
|
# be a string or a Date/Time object.
|
|
128
128
|
#
|
|
@@ -136,15 +136,15 @@ module Webrat
|
|
|
136
136
|
# select_date Date.parse("December 25, 2000"), :from => "Event"
|
|
137
137
|
# select_date "April 26, 1982", :id_prefix => 'birthday'
|
|
138
138
|
def select_date(date_to_select, options ={})
|
|
139
|
-
date = date_to_select.is_a?(Date) || date_to_select.is_a?(Time) ?
|
|
140
|
-
date_to_select : Date.parse(date_to_select)
|
|
141
|
-
|
|
139
|
+
date = date_to_select.is_a?(Date) || date_to_select.is_a?(Time) ?
|
|
140
|
+
date_to_select : Date.parse(date_to_select)
|
|
141
|
+
|
|
142
142
|
id_prefix = locate_id_prefix(options) do
|
|
143
143
|
year_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:year]}$/).locate
|
|
144
144
|
raise NotFoundError.new("No date fields were found") unless year_field && year_field.id =~ /(.*?)_1i/
|
|
145
145
|
$1
|
|
146
146
|
end
|
|
147
|
-
|
|
147
|
+
|
|
148
148
|
select date.year, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:year]}"
|
|
149
149
|
select date.strftime('%B'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:month]}"
|
|
150
150
|
select date.day, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:day]}"
|
|
@@ -152,9 +152,9 @@ module Webrat
|
|
|
152
152
|
|
|
153
153
|
webrat_deprecate :selects_date, :select_date
|
|
154
154
|
|
|
155
|
-
# Verifies that time elements (hour, minute) exist on the current page
|
|
155
|
+
# Verifies that time elements (hour, minute) exist on the current page
|
|
156
156
|
# with the specified values. You can optionally restrict the search to a specific
|
|
157
|
-
# time's elements by assigning <tt>options[:from]</tt> the value of the time's
|
|
157
|
+
# time's elements by assigning <tt>options[:from]</tt> the value of the time's
|
|
158
158
|
# label. Selects all the time elements with date provided. The time provided may
|
|
159
159
|
# be a string or a Time object.
|
|
160
160
|
#
|
|
@@ -164,28 +164,28 @@ module Webrat
|
|
|
164
164
|
#
|
|
165
165
|
# Note: Just like Rails' time_select helper this assumes the form is using
|
|
166
166
|
# 24 hour select boxes, and not 12 hours with AM/PM.
|
|
167
|
-
#
|
|
167
|
+
#
|
|
168
168
|
# Examples:
|
|
169
169
|
# select_time "9:30"
|
|
170
170
|
# select_date "3:30PM", :from => "Party Time"
|
|
171
171
|
# select_date Time.parse("10:00PM"), :from => "Event"
|
|
172
172
|
# select_date "10:30AM", :id_prefix => 'meeting'
|
|
173
173
|
def select_time(time_to_select, options ={})
|
|
174
|
-
time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
|
|
174
|
+
time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
|
|
175
175
|
|
|
176
176
|
id_prefix = locate_id_prefix(options) do
|
|
177
177
|
hour_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:hour]}$/).locate
|
|
178
178
|
raise NotFoundError.new("No time fields were found") unless hour_field && hour_field.id =~ /(.*?)_4i/
|
|
179
179
|
$1
|
|
180
180
|
end
|
|
181
|
-
|
|
181
|
+
|
|
182
182
|
select time.hour.to_s.rjust(2,'0'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:hour]}"
|
|
183
183
|
select time.min.to_s.rjust(2,'0'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:minute]}"
|
|
184
184
|
end
|
|
185
185
|
|
|
186
186
|
webrat_deprecate :selects_time, :select_time
|
|
187
|
-
|
|
188
|
-
# Verifies and selects all the date and time elements on the current page.
|
|
187
|
+
|
|
188
|
+
# Verifies and selects all the date and time elements on the current page.
|
|
189
189
|
# See #select_time and #select_date for more details and available options.
|
|
190
190
|
#
|
|
191
191
|
# Examples:
|
|
@@ -194,23 +194,23 @@ module Webrat
|
|
|
194
194
|
# select_datetime Time.parse("December 25, 2000 15:30"), :from => "Event"
|
|
195
195
|
# select_datetime "April 26, 1982 5:50PM", :id_prefix => 'birthday'
|
|
196
196
|
def select_datetime(time_to_select, options ={})
|
|
197
|
-
time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
|
|
198
|
-
|
|
197
|
+
time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
|
|
198
|
+
|
|
199
199
|
options[:id_prefix] ||= (options[:from] ? FieldByIdLocator.new(@session, dom, options[:from]).locate : nil)
|
|
200
|
-
|
|
200
|
+
|
|
201
201
|
select_date time, options
|
|
202
202
|
select_time time, options
|
|
203
203
|
end
|
|
204
204
|
|
|
205
205
|
webrat_deprecate :selects_datetime, :select_datetime
|
|
206
|
-
|
|
206
|
+
|
|
207
207
|
# Verifies that an input file field exists on the current page and sets
|
|
208
208
|
# its value to the given +file+, so that the file will be uploaded
|
|
209
209
|
# along with the form. An optional <tt>content_type</tt> may be given.
|
|
210
210
|
#
|
|
211
211
|
# Example:
|
|
212
|
-
#
|
|
213
|
-
#
|
|
212
|
+
# attach_file "Resume", "/path/to/the/resume.txt"
|
|
213
|
+
# attach_file "Photo", "/path/to/the/image.png", "image/png"
|
|
214
214
|
def attach_file(field_locator, path, content_type = nil)
|
|
215
215
|
locate_field(field_locator, FileField).set(path, content_type)
|
|
216
216
|
end
|
|
@@ -229,13 +229,13 @@ module Webrat
|
|
|
229
229
|
def click_area(area_name)
|
|
230
230
|
find_area(area_name).click
|
|
231
231
|
end
|
|
232
|
-
|
|
232
|
+
|
|
233
233
|
webrat_deprecate :clicks_area, :click_area
|
|
234
|
-
|
|
234
|
+
|
|
235
235
|
# Issues a request for the URL pointed to by a link on the current page,
|
|
236
236
|
# follows any redirects, and verifies the final page load was successful.
|
|
237
|
-
#
|
|
238
|
-
# click_link has very basic support for detecting Rails-generated
|
|
237
|
+
#
|
|
238
|
+
# click_link has very basic support for detecting Rails-generated
|
|
239
239
|
# JavaScript onclick handlers for PUT, POST and DELETE links, as well as
|
|
240
240
|
# CSRF authenticity tokens if they are present.
|
|
241
241
|
#
|
|
@@ -243,15 +243,15 @@ module Webrat
|
|
|
243
243
|
#
|
|
244
244
|
# Passing a :method in the options hash overrides the HTTP method used
|
|
245
245
|
# for making the link request
|
|
246
|
-
#
|
|
246
|
+
#
|
|
247
247
|
# It will try to find links by (in order of precedence):
|
|
248
248
|
# innerHTML, with simple handling
|
|
249
249
|
# title
|
|
250
250
|
# id
|
|
251
|
-
#
|
|
251
|
+
#
|
|
252
252
|
# innerHTML and title are matchable by text subtring or Regexp
|
|
253
253
|
# id is matchable by full text equality or Regexp
|
|
254
|
-
#
|
|
254
|
+
#
|
|
255
255
|
# Example:
|
|
256
256
|
# click_link "Sign up"
|
|
257
257
|
# click_link "Sign up", :javascript => false
|
|
@@ -261,7 +261,7 @@ module Webrat
|
|
|
261
261
|
end
|
|
262
262
|
|
|
263
263
|
webrat_deprecate :clicks_link, :click_link
|
|
264
|
-
|
|
264
|
+
|
|
265
265
|
# Verifies that a submit button exists for the form, then submits the form, follows
|
|
266
266
|
# any redirects, and verifies the final page was successful.
|
|
267
267
|
#
|
|
@@ -288,38 +288,38 @@ module Webrat
|
|
|
288
288
|
def submit_form(id)
|
|
289
289
|
FormLocator.new(@session, dom, id).locate.submit
|
|
290
290
|
end
|
|
291
|
-
|
|
291
|
+
|
|
292
292
|
def dom # :nodoc:
|
|
293
293
|
return @dom if @dom
|
|
294
|
-
|
|
294
|
+
|
|
295
295
|
if @selector
|
|
296
296
|
@dom = scoped_dom
|
|
297
297
|
else
|
|
298
298
|
@dom = page_dom
|
|
299
299
|
end
|
|
300
|
-
|
|
300
|
+
|
|
301
301
|
return @dom
|
|
302
302
|
end
|
|
303
|
-
|
|
303
|
+
|
|
304
304
|
protected
|
|
305
|
-
|
|
305
|
+
|
|
306
306
|
def page_dom #:nodoc:
|
|
307
307
|
return @response.dom if @response.respond_to?(:dom)
|
|
308
|
-
|
|
308
|
+
|
|
309
309
|
if @session.xml_content_type?
|
|
310
310
|
dom = Webrat::XML.xml_document(@response_body)
|
|
311
311
|
else
|
|
312
312
|
dom = Webrat::XML.html_document(@response_body)
|
|
313
313
|
end
|
|
314
|
-
|
|
314
|
+
|
|
315
315
|
Webrat.define_dom_method(@response, dom)
|
|
316
316
|
return dom
|
|
317
317
|
end
|
|
318
|
-
|
|
318
|
+
|
|
319
319
|
def scoped_dom
|
|
320
320
|
Webrat::XML.css_at(@scope.dom, @selector)
|
|
321
321
|
end
|
|
322
|
-
|
|
322
|
+
|
|
323
323
|
def locate_field(field_locator, *field_types) #:nodoc:
|
|
324
324
|
if field_locator.is_a?(Field)
|
|
325
325
|
field_locator
|
|
@@ -327,10 +327,10 @@ module Webrat
|
|
|
327
327
|
field(field_locator, *field_types)
|
|
328
328
|
end
|
|
329
329
|
end
|
|
330
|
-
|
|
330
|
+
|
|
331
331
|
def locate_id_prefix(options, &location_strategy) #:nodoc:
|
|
332
332
|
return options[:id_prefix] if options[:id_prefix]
|
|
333
|
-
|
|
333
|
+
|
|
334
334
|
if options[:from]
|
|
335
335
|
if (label = LabelLocator.new(@session, dom, options[:from]).locate)
|
|
336
336
|
label.for_id
|
|
@@ -341,10 +341,10 @@ module Webrat
|
|
|
341
341
|
yield
|
|
342
342
|
end
|
|
343
343
|
end
|
|
344
|
-
|
|
344
|
+
|
|
345
345
|
def forms #:nodoc:
|
|
346
346
|
@forms ||= Form.load_all(@session, dom)
|
|
347
347
|
end
|
|
348
|
-
|
|
348
|
+
|
|
349
349
|
end
|
|
350
350
|
end
|