mechanize 2.0.1 → 2.1.pre.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of mechanize might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/CHANGELOG.rdoc +82 -0
- data/EXAMPLES.rdoc +1 -1
- data/FAQ.rdoc +9 -9
- data/Manifest.txt +35 -48
- data/README.rdoc +2 -1
- data/Rakefile +16 -3
- data/lib/mechanize.rb +809 -392
- data/lib/mechanize/content_type_error.rb +10 -11
- data/lib/mechanize/cookie.rb +193 -60
- data/lib/mechanize/cookie_jar.rb +39 -86
- data/lib/mechanize/download.rb +59 -0
- data/lib/mechanize/element_matcher.rb +1 -0
- data/lib/mechanize/file.rb +61 -76
- data/lib/mechanize/file_saver.rb +37 -35
- data/lib/mechanize/form.rb +475 -410
- data/lib/mechanize/form/button.rb +4 -7
- data/lib/mechanize/form/check_box.rb +10 -9
- data/lib/mechanize/form/field.rb +52 -42
- data/lib/mechanize/form/file_upload.rb +17 -19
- data/lib/mechanize/form/hidden.rb +3 -0
- data/lib/mechanize/form/image_button.rb +15 -16
- data/lib/mechanize/form/keygen.rb +34 -0
- data/lib/mechanize/form/multi_select_list.rb +20 -9
- data/lib/mechanize/form/option.rb +48 -47
- data/lib/mechanize/form/radio_button.rb +52 -45
- data/lib/mechanize/form/reset.rb +3 -0
- data/lib/mechanize/form/select_list.rb +10 -6
- data/lib/mechanize/form/submit.rb +3 -0
- data/lib/mechanize/form/text.rb +3 -0
- data/lib/mechanize/form/textarea.rb +3 -0
- data/lib/mechanize/headers.rb +17 -19
- data/lib/mechanize/history.rb +60 -61
- data/lib/mechanize/http.rb +5 -0
- data/lib/mechanize/http/agent.rb +485 -218
- data/lib/mechanize/http/auth_challenge.rb +59 -0
- data/lib/mechanize/http/auth_realm.rb +31 -0
- data/lib/mechanize/http/content_disposition_parser.rb +188 -0
- data/lib/mechanize/http/www_authenticate_parser.rb +155 -0
- data/lib/mechanize/monkey_patch.rb +14 -35
- data/lib/mechanize/page.rb +34 -2
- data/lib/mechanize/page/base.rb +6 -7
- data/lib/mechanize/page/frame.rb +5 -5
- data/lib/mechanize/page/image.rb +23 -23
- data/lib/mechanize/page/label.rb +16 -16
- data/lib/mechanize/page/link.rb +16 -0
- data/lib/mechanize/page/meta_refresh.rb +19 -7
- data/lib/mechanize/parser.rb +173 -0
- data/lib/mechanize/pluggable_parsers.rb +126 -83
- data/lib/mechanize/redirect_limit_reached_error.rb +16 -13
- data/lib/mechanize/redirect_not_get_or_head_error.rb +18 -16
- data/lib/mechanize/response_code_error.rb +16 -17
- data/lib/mechanize/robots_disallowed_error.rb +22 -23
- data/lib/mechanize/test_case.rb +659 -0
- data/lib/mechanize/unauthorized_error.rb +3 -0
- data/lib/mechanize/unsupported_scheme_error.rb +4 -6
- data/lib/mechanize/util.rb +0 -12
- data/test/htdocs/form_order_test.html +11 -0
- data/test/htdocs/form_test.html +2 -2
- data/test/htdocs/tc_links.html +1 -0
- data/test/test_mechanize.rb +367 -59
- data/test/test_mechanize_cookie.rb +69 -4
- data/test/test_mechanize_cookie_jar.rb +200 -124
- data/test/test_mechanize_download.rb +43 -0
- data/test/test_mechanize_file.rb +53 -45
- data/test/{test_mechanize_file_response.rb → test_mechanize_file_connection.rb} +2 -2
- data/test/test_mechanize_file_request.rb +2 -2
- data/test/test_mechanize_file_saver.rb +21 -0
- data/test/test_mechanize_form.rb +345 -46
- data/test/test_mechanize_form_check_box.rb +5 -4
- data/test/test_mechanize_form_encoding.rb +10 -16
- data/test/test_mechanize_form_field.rb +45 -3
- data/test/test_mechanize_form_file_upload.rb +20 -0
- data/test/test_mechanize_form_image_button.rb +2 -2
- data/test/test_mechanize_form_keygen.rb +32 -0
- data/test/test_mechanize_form_multi_select_list.rb +84 -0
- data/test/test_mechanize_form_option.rb +55 -0
- data/test/test_mechanize_form_radio_button.rb +78 -0
- data/test/test_mechanize_form_select_list.rb +76 -0
- data/test/test_mechanize_form_textarea.rb +8 -7
- data/test/{test_headers.rb → test_mechanize_headers.rb} +4 -2
- data/test/test_mechanize_history.rb +103 -0
- data/test/test_mechanize_http_agent.rb +525 -17
- data/test/test_mechanize_http_auth_challenge.rb +39 -0
- data/test/test_mechanize_http_auth_realm.rb +49 -0
- data/test/test_mechanize_http_content_disposition_parser.rb +118 -0
- data/test/test_mechanize_http_www_authenticate_parser.rb +146 -0
- data/test/test_mechanize_link.rb +10 -14
- data/test/test_mechanize_page.rb +118 -0
- data/test/test_mechanize_page_encoding.rb +48 -13
- data/test/test_mechanize_page_frame.rb +16 -0
- data/test/test_mechanize_page_link.rb +27 -19
- data/test/test_mechanize_page_meta_refresh.rb +26 -14
- data/test/test_mechanize_parser.rb +289 -0
- data/test/test_mechanize_pluggable_parser.rb +52 -0
- data/test/test_mechanize_redirect_limit_reached_error.rb +24 -0
- data/test/test_mechanize_redirect_not_get_or_head_error.rb +3 -7
- data/test/test_mechanize_subclass.rb +2 -2
- data/test/test_mechanize_util.rb +24 -13
- data/test/test_multi_select.rb +23 -22
- metadata +145 -114
- metadata.gz.sig +0 -0
- data/lib/mechanize/inspect.rb +0 -88
- data/test/helper.rb +0 -175
- data/test/htdocs/form_select_all.html +0 -16
- data/test/htdocs/form_select_none.html +0 -17
- data/test/htdocs/form_select_noopts.html +0 -10
- data/test/htdocs/iframe_test.html +0 -16
- data/test/htdocs/nofollow.html +0 -9
- data/test/htdocs/norobots.html +0 -8
- data/test/htdocs/rel_nofollow.html +0 -8
- data/test/htdocs/tc_base_images.html +0 -10
- data/test/htdocs/tc_images.html +0 -8
- data/test/htdocs/tc_no_attributes.html +0 -16
- data/test/htdocs/tc_radiobuttons.html +0 -17
- data/test/htdocs/test_bad_encoding.html +0 -52
- data/test/servlets.rb +0 -402
- data/test/ssl_server.rb +0 -48
- data/test/test_cookies.rb +0 -129
- data/test/test_form_action.rb +0 -52
- data/test/test_form_as_hash.rb +0 -59
- data/test/test_form_button.rb +0 -46
- data/test/test_frames.rb +0 -34
- data/test/test_history.rb +0 -118
- data/test/test_history_added.rb +0 -16
- data/test/test_html_unscape_forms.rb +0 -46
- data/test/test_if_modified_since.rb +0 -20
- data/test/test_images.rb +0 -19
- data/test/test_no_attributes.rb +0 -13
- data/test/test_option.rb +0 -18
- data/test/test_pluggable_parser.rb +0 -136
- data/test/test_post_form.rb +0 -37
- data/test/test_pretty_print.rb +0 -22
- data/test/test_radiobutton.rb +0 -75
- data/test/test_redirect_limit_reached.rb +0 -39
- data/test/test_referer.rb +0 -81
- data/test/test_relative_links.rb +0 -40
- data/test/test_request.rb +0 -13
- data/test/test_response_code.rb +0 -53
- data/test/test_robots.rb +0 -72
- data/test/test_save_file.rb +0 -48
- data/test/test_scheme.rb +0 -48
- data/test/test_select.rb +0 -119
- data/test/test_select_all.rb +0 -15
- data/test/test_select_none.rb +0 -15
- data/test/test_select_noopts.rb +0 -18
- data/test/test_set_fields.rb +0 -44
- data/test/test_ssl_server.rb +0 -20
data/test/test_relative_links.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class TestRelativeLinks < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@agent = Mechanize.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_dot_dot_slash
|
9
|
-
@page = @agent.get("http://localhost/relative/tc_relative_links.html")
|
10
|
-
@page.links.first.click
|
11
|
-
assert_equal('http://localhost/tc_relative_links.html', @agent.current_page.uri.to_s)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_too_many_dots
|
15
|
-
@page = @agent.get("http://localhost/relative/tc_relative_links.html")
|
16
|
-
page = @page.link_with(:text => 'too many dots').click
|
17
|
-
|
18
|
-
assert_equal('http://localhost/tc_relative_links.html', page.uri.to_s)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_go_forward
|
22
|
-
@page = @agent.get("http://localhost/tc_relative_links.html")
|
23
|
-
@page = @page.links.first.click
|
24
|
-
assert_equal('http://localhost/relative/tc_relative_links.html', @agent.current_page.uri.to_s)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_frame_dot_dot_slash
|
28
|
-
@page = @agent.get("http://localhost/relative/tc_relative_links.html")
|
29
|
-
@agent.click(@page.frame_with(:text => 'frame1'))
|
30
|
-
assert_equal('http://localhost/tc_relative_links.html', @agent.current_page.uri.to_s)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_frame_forward_back_forward
|
34
|
-
@page = @agent.get("http://localhost/tc_relative_links.html")
|
35
|
-
@agent.click @page.frame_with(:name => 'frame1')
|
36
|
-
assert_equal('http://localhost/relative/tc_relative_links.html', @agent.current_page.uri.to_s)
|
37
|
-
@agent.click @page.frame_with(:name => 'frame2')
|
38
|
-
assert_equal('http://localhost/relative/tc_relative_links.html', @agent.current_page.uri.to_s)
|
39
|
-
end
|
40
|
-
end
|
data/test/test_request.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class RequestTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@agent = Mechanize.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_uri_is_not_polluted
|
9
|
-
uri = URI.parse('http://localhost/')
|
10
|
-
@agent.get(uri, {'q' => 'Ruby'})
|
11
|
-
assert_equal 'http://localhost/', uri.to_s
|
12
|
-
end
|
13
|
-
end
|
data/test/test_response_code.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class ResponseCodeMechTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@mech = Mechanize.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_eof_error_loop
|
9
|
-
assert_raises(Net::HTTP::Persistent::Error) {
|
10
|
-
@mech.get("http://localhost/http_headers?Content-Length=300")
|
11
|
-
}
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_redirect
|
15
|
-
@mech.get("http://localhost/response_code?code=300")
|
16
|
-
assert_equal("http://localhost/index.html",
|
17
|
-
@mech.current_page.uri.to_s)
|
18
|
-
|
19
|
-
@mech.get("http://localhost/response_code?code=301")
|
20
|
-
assert_equal("http://localhost/index.html",
|
21
|
-
@mech.current_page.uri.to_s)
|
22
|
-
|
23
|
-
@mech.get("http://localhost/response_code?code=302")
|
24
|
-
assert_equal("http://localhost/index.html",
|
25
|
-
@mech.current_page.uri.to_s)
|
26
|
-
|
27
|
-
@mech.get("http://localhost/response_code?code=303")
|
28
|
-
assert_equal("http://localhost/index.html",
|
29
|
-
@mech.current_page.uri.to_s)
|
30
|
-
|
31
|
-
@mech.get("http://localhost/response_code?code=307")
|
32
|
-
assert_equal("http://localhost/index.html",
|
33
|
-
@mech.current_page.uri.to_s)
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_do_not_follow_redirect
|
37
|
-
@mech.redirect_ok = false
|
38
|
-
|
39
|
-
@mech.get("http://localhost/response_code?code=302")
|
40
|
-
assert_equal("http://localhost/response_code?code=302",
|
41
|
-
@mech.current_page.uri.to_s)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_error
|
45
|
-
e = assert_raises Mechanize::ResponseCodeError do
|
46
|
-
@mech.get "http://localhost/response_code?code=500"
|
47
|
-
end
|
48
|
-
|
49
|
-
assert_equal "500", e.response_code
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
data/test/test_robots.rb
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class TestRobots < MiniTest::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@mech = Mechanize.new
|
7
|
-
@robot = Mechanize.new { |a|
|
8
|
-
a.robots = true
|
9
|
-
}
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_robots
|
13
|
-
assert_equal "Welcome!", @robot.get("http://localhost/robots.html").title
|
14
|
-
|
15
|
-
assert_raises Mechanize::RobotsDisallowedError do
|
16
|
-
@robot.get("http://localhost/norobots.html")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_robots_allowed_eh
|
21
|
-
allowed = URI.parse 'http://localhost/robots.html'
|
22
|
-
disallowed = URI.parse 'http://localhost/norobots.html'
|
23
|
-
assert @mech.agent.robots_allowed?(allowed)
|
24
|
-
assert !@mech.agent.robots_allowed?(disallowed)
|
25
|
-
|
26
|
-
assert !@mech.agent.robots_disallowed?(allowed)
|
27
|
-
assert @mech.agent.robots_disallowed?(disallowed)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_noindex
|
31
|
-
@mech.get("http://localhost/noindex.html")
|
32
|
-
|
33
|
-
assert @robot.agent.robots_allowed? URI("http://localhost/noindex.html")
|
34
|
-
|
35
|
-
assert_raises Mechanize::RobotsDisallowedError do
|
36
|
-
@robot.get("http://localhost/noindex.html")
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_nofollow
|
41
|
-
page = @mech.get("http://localhost/nofollow.html")
|
42
|
-
|
43
|
-
page.links[0].click
|
44
|
-
page.links[1].click
|
45
|
-
|
46
|
-
page = @robot.get("http://localhost/nofollow.html")
|
47
|
-
|
48
|
-
assert_raises Mechanize::RobotsDisallowedError do
|
49
|
-
page.links[0].click
|
50
|
-
end
|
51
|
-
assert_raises Mechanize::RobotsDisallowedError do
|
52
|
-
page.links[1].click
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_rel_nofollow
|
57
|
-
page = @mech.get("http://localhost/rel_nofollow.html")
|
58
|
-
|
59
|
-
page.links[0].click
|
60
|
-
page.links[1].click
|
61
|
-
|
62
|
-
page = @robot.get("http://localhost/rel_nofollow.html")
|
63
|
-
|
64
|
-
page.links[0].click
|
65
|
-
|
66
|
-
assert_raises Mechanize::RobotsDisallowedError do
|
67
|
-
page.links[1].click
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
data/test/test_save_file.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class TestSaveFile < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@agent = Mechanize.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_save_file
|
9
|
-
page = @agent.get('http://localhost:2000/form_no_action.html')
|
10
|
-
length = page.response['Content-Length']
|
11
|
-
page.save_as("test.html")
|
12
|
-
file_length = nil
|
13
|
-
File.open("test.html", "r") { |f| file_length = f.read.length }
|
14
|
-
FileUtils.rm("test.html")
|
15
|
-
assert_equal(length.to_i, file_length)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_save_file_default
|
19
|
-
page = Mechanize::File.new(
|
20
|
-
URI.parse('http://localhost/test.html'),
|
21
|
-
{},
|
22
|
-
"hello"
|
23
|
-
)
|
24
|
-
page.save
|
25
|
-
assert(File.exists?('test.html'))
|
26
|
-
page.save
|
27
|
-
assert(File.exists?('test.html.1'))
|
28
|
-
page.save
|
29
|
-
assert(File.exists?('test.html.2'))
|
30
|
-
FileUtils.rm("test.html")
|
31
|
-
FileUtils.rm("test.html.1")
|
32
|
-
FileUtils.rm("test.html.2")
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_save_file_default_with_dots
|
36
|
-
page = Mechanize::File.new(
|
37
|
-
URI.parse('http://localhost/../test.html'),
|
38
|
-
{},
|
39
|
-
"hello"
|
40
|
-
)
|
41
|
-
page.save
|
42
|
-
assert(File.exists?('test.html'))
|
43
|
-
page.save
|
44
|
-
assert(File.exists?('test.html.1'))
|
45
|
-
FileUtils.rm("test.html")
|
46
|
-
FileUtils.rm("test.html.1")
|
47
|
-
end
|
48
|
-
end
|
data/test/test_scheme.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class SchemeTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@agent = Mechanize.new
|
6
|
-
@agent.log = Class.new(Object) do
|
7
|
-
def method_missing(*args)
|
8
|
-
end
|
9
|
-
end.new
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_file_scheme
|
13
|
-
f = File.expand_path(__FILE__)
|
14
|
-
page = @agent.get("file://#{f}")
|
15
|
-
assert_equal(File.read(f), page.body)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_file_scheme_parses_html
|
19
|
-
f = File.expand_path(
|
20
|
-
File.join(File.dirname(__FILE__), "htdocs", 'google.html'))
|
21
|
-
page = @agent.get("file://#{f}")
|
22
|
-
assert_equal(File.read(f), page.body)
|
23
|
-
assert_kind_of(Mechanize::Page, page)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_file_scheme_supports_directories
|
27
|
-
f = File.expand_path(File.join(File.dirname(__FILE__), "htdocs"))
|
28
|
-
page = @agent.get("file://#{f}")
|
29
|
-
assert_equal(Dir[File.join(f, '*')].length, page.links.length)
|
30
|
-
assert_kind_of(Mechanize::Page, page)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_click_file_link
|
34
|
-
f = File.expand_path(File.join(File.dirname(__FILE__), "htdocs"))
|
35
|
-
page = @agent.get("file://#{f}")
|
36
|
-
link = page.links.find { |l| l.text =~ /tc_follow_meta/ }
|
37
|
-
|
38
|
-
path = URI.parse(link.href).path
|
39
|
-
|
40
|
-
page = link.click
|
41
|
-
assert_equal(File.read(path), page.body)
|
42
|
-
|
43
|
-
link = page.meta_refresh.first
|
44
|
-
page = @agent.click(link)
|
45
|
-
|
46
|
-
assert_equal("http://localhost/index.html", @agent.history.last.uri.to_s)
|
47
|
-
end
|
48
|
-
end
|
data/test/test_select.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class SelectTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@agent = Mechanize.new
|
6
|
-
@page = @agent.get("http://localhost/form_select.html")
|
7
|
-
@form = @page.forms.first
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_option_with
|
11
|
-
o = @form.field_with(:name => 'list').option_with(:value => '1')
|
12
|
-
assert_equal '1', o.value
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_options_with
|
16
|
-
os = @form.field_with(:name => 'list').options_with(:value => /1|2/)
|
17
|
-
assert_equal ['1', '2'].sort, os.map { |x| x.value }.sort
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_select_none
|
21
|
-
@form.fields_with(:name => 'list').first.select_none
|
22
|
-
assert_equal('1', @form.list)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_select_all
|
26
|
-
@form.fields_with(:name => 'list').first.select_all
|
27
|
-
assert_equal('6', @form.list)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_correct_class
|
31
|
-
assert_instance_of(Mechanize::Form::SelectList,
|
32
|
-
@form.field_with(:name => 'list'))
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_click_all
|
36
|
-
@form.field_with(:name => 'list').options.each { |o| o.click }
|
37
|
-
|
38
|
-
option_list = @form.field_with(:name => 'list').options
|
39
|
-
|
40
|
-
assert_equal(6, option_list.length)
|
41
|
-
assert_equal(option_list.last.value, @form.list)
|
42
|
-
|
43
|
-
page = @agent.submit(@form)
|
44
|
-
|
45
|
-
assert_equal(1, page.links.length)
|
46
|
-
assert_equal(1, page.links_with(:text => "list:#{option_list.last}").length)
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_select_default
|
50
|
-
assert_equal("2", @form.list)
|
51
|
-
page = @agent.submit(@form)
|
52
|
-
assert_equal(1, page.links.length)
|
53
|
-
assert_equal(1, page.links_with(:text => 'list:2').length)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_select_one
|
57
|
-
@form.list = 'Aaron'
|
58
|
-
assert_equal('Aaron', @form.list)
|
59
|
-
page = @agent.submit(@form)
|
60
|
-
assert_equal(1, page.links.length)
|
61
|
-
assert_equal('list:Aaron', page.links.first.text)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_select_two
|
65
|
-
@form.list = ['1', 'Aaron']
|
66
|
-
assert_equal('1', @form.list)
|
67
|
-
page = @agent.submit(@form)
|
68
|
-
assert_equal(1, page.links.length)
|
69
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_select_three
|
73
|
-
@form.list = ['1', '2', '3']
|
74
|
-
assert_equal('1', @form.list)
|
75
|
-
page = @agent.submit(@form)
|
76
|
-
assert_equal(1, page.links.length)
|
77
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_select_three_twice
|
81
|
-
@form.list = ['1', '2', '3']
|
82
|
-
@form.list = ['1', '2', '3']
|
83
|
-
assert_equal('1', @form.list)
|
84
|
-
page = @agent.submit(@form)
|
85
|
-
assert_equal(1, page.links.length)
|
86
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_select_with_empty_value
|
90
|
-
list = @form.field_with(:name => 'list')
|
91
|
-
list.options.last.instance_variable_set(:@value, '')
|
92
|
-
list.options.last.tick
|
93
|
-
page = @agent.submit(@form)
|
94
|
-
assert_equal(1, page.links.length)
|
95
|
-
assert_equal(1, page.links_with(:text => 'list:').length)
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_select_with_click
|
99
|
-
@form.list = ['1', 'Aaron']
|
100
|
-
@form.field_with(:name => 'list').options[3].tick
|
101
|
-
assert_equal('4', @form.list)
|
102
|
-
page = @agent.submit(@form)
|
103
|
-
assert_equal(1, page.links.length)
|
104
|
-
assert_equal(1, page.links_with(:text => 'list:4').length)
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_click_twice
|
108
|
-
list = @form.field_with(:name => 'list')
|
109
|
-
list.options[0].click
|
110
|
-
assert_equal('1', @form.list)
|
111
|
-
list.options[1].click
|
112
|
-
assert_equal('2', @form.list)
|
113
|
-
list.options.last.click
|
114
|
-
assert_equal('6', @form.list)
|
115
|
-
assert_equal(1, list.selected_options.length)
|
116
|
-
list.select_all
|
117
|
-
assert_equal(1, list.selected_options.length)
|
118
|
-
end
|
119
|
-
end
|
data/test/test_select_all.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
class SelectAllTest < MiniTest::Unit::TestCase
|
3
|
-
def setup
|
4
|
-
@agent = Mechanize.new
|
5
|
-
@page = @agent.get("http://localhost/form_select_all.html")
|
6
|
-
@form = @page.forms.first
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_select_default
|
10
|
-
assert_equal("6", @form.list)
|
11
|
-
page = @agent.submit(@form)
|
12
|
-
assert_equal(1, page.links.length)
|
13
|
-
assert_equal(1, page.links_with(:text => 'list:6').length)
|
14
|
-
end
|
15
|
-
end
|
data/test/test_select_none.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
class SelectNoneTest < MiniTest::Unit::TestCase
|
3
|
-
def setup
|
4
|
-
@agent = Mechanize.new
|
5
|
-
@page = @agent.get("http://localhost/form_select_none.html")
|
6
|
-
@form = @page.forms.first
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_select_default
|
10
|
-
assert_equal("1", @form.list)
|
11
|
-
page = @agent.submit(@form)
|
12
|
-
assert_equal(1, page.links.length)
|
13
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
14
|
-
end
|
15
|
-
end
|
data/test/test_select_noopts.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
class SelectNoOptionsTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@agent = Mechanize.new
|
6
|
-
@page = @agent.get("http://localhost/form_select_noopts.html")
|
7
|
-
@form = @page.forms.first
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_select_default
|
11
|
-
assert @form.field('list')
|
12
|
-
assert_nil @form.list
|
13
|
-
|
14
|
-
page = @agent.submit(@form)
|
15
|
-
|
16
|
-
assert_equal(0, page.links.length)
|
17
|
-
end
|
18
|
-
end
|