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
@@ -1,10 +1,11 @@
|
|
1
|
-
require '
|
1
|
+
require 'mechanize/test_case'
|
2
2
|
|
3
|
-
class TestMechanizeFormCheckBox <
|
3
|
+
class TestMechanizeFormCheckBox < Mechanize::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
|
7
|
-
|
6
|
+
super
|
7
|
+
|
8
|
+
@page = @mech.get('http://localhost/tc_checkboxes.html')
|
8
9
|
end
|
9
10
|
|
10
11
|
def test_check
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
require
|
2
|
+
require 'mechanize/test_case'
|
3
3
|
|
4
|
-
class TestMechanizeFormEncoding <
|
4
|
+
class TestMechanizeFormEncoding < Mechanize::TestCase
|
5
5
|
|
6
6
|
# See also: tests of Util.from_native_charset
|
7
7
|
# Encoding test should do with non-utf-8 characters
|
@@ -21,21 +21,16 @@ class TestMechanizeFormEncoding < MiniTest::Unit::TestCase
|
|
21
21
|
ENCODING_LOG_MESSAGE = /INFO -- : form encoding: Shift_JIS/
|
22
22
|
INVALID_ENCODING = 'UTF-eight'
|
23
23
|
|
24
|
-
def setup
|
25
|
-
@agent = Mechanize.new
|
26
|
-
end
|
27
|
-
|
28
24
|
def set_form_with_encoding(enc)
|
29
|
-
page = @
|
25
|
+
page = @mech.get("http://localhost/form_set_fields.html")
|
30
26
|
form = page.forms.first
|
31
27
|
form.encoding = enc
|
32
28
|
form['first_name'] = INPUTTED_VALUE
|
33
29
|
form
|
34
30
|
end
|
35
31
|
|
36
|
-
|
37
32
|
def test_form_encoding_returns_accept_charset
|
38
|
-
page = @
|
33
|
+
page = @mech.get("http://localhost/rails_3_encoding_hack_form_test.html")
|
39
34
|
form = page.forms.first
|
40
35
|
accept_charset = form.form_node['accept-charset']
|
41
36
|
|
@@ -45,7 +40,7 @@ class TestMechanizeFormEncoding < MiniTest::Unit::TestCase
|
|
45
40
|
end
|
46
41
|
|
47
42
|
def test_form_encoding_returns_page_encoding_when_no_accept_charset
|
48
|
-
page = @
|
43
|
+
page = @mech.get("http://localhost/form_set_fields.html")
|
49
44
|
form = page.forms.first
|
50
45
|
accept_charset = form.form_node['accept-charset']
|
51
46
|
|
@@ -55,7 +50,7 @@ class TestMechanizeFormEncoding < MiniTest::Unit::TestCase
|
|
55
50
|
end
|
56
51
|
|
57
52
|
def test_form_encoding_equals_sets_new_encoding
|
58
|
-
page = @
|
53
|
+
page = @mech.get("http://localhost/form_set_fields.html")
|
59
54
|
form = page.forms.first
|
60
55
|
|
61
56
|
refute_equal CONTENT_ENCODING, form.encoding
|
@@ -80,14 +75,13 @@ class TestMechanizeFormEncoding < MiniTest::Unit::TestCase
|
|
80
75
|
assert_equal nil, form.encoding
|
81
76
|
end
|
82
77
|
|
83
|
-
|
84
78
|
def test_post_form_with_form_encoding
|
85
79
|
form = set_form_with_encoding CONTENT_ENCODING
|
86
80
|
form.submit
|
87
81
|
|
88
82
|
# we can not use "links.find{|l| l.text == 'key:val'}" assertion here
|
89
83
|
# because the link text encoding is always UTF-8 regaredless of html encoding
|
90
|
-
assert EXPECTED_QUERY, @
|
84
|
+
assert EXPECTED_QUERY, @mech.page.at('div#query').inner_text
|
91
85
|
end
|
92
86
|
|
93
87
|
def test_post_form_with_problematic_encoding
|
@@ -107,14 +101,14 @@ class TestMechanizeFormEncoding < MiniTest::Unit::TestCase
|
|
107
101
|
|
108
102
|
def test_post_form_logs_form_encoding
|
109
103
|
sio = StringIO.new
|
110
|
-
@
|
111
|
-
@
|
104
|
+
@mech.log = Logger.new(sio)
|
105
|
+
@mech.log.level = Logger::INFO
|
112
106
|
|
113
107
|
form = set_form_with_encoding CONTENT_ENCODING
|
114
108
|
form.submit
|
115
109
|
|
116
110
|
assert_match ENCODING_LOG_MESSAGE, sio.string
|
117
111
|
|
118
|
-
@
|
112
|
+
@mech.log = nil
|
119
113
|
end
|
120
114
|
end
|
@@ -1,8 +1,29 @@
|
|
1
|
-
require '
|
1
|
+
require 'mechanize/test_case'
|
2
2
|
|
3
|
-
class TestMechanizeFormField <
|
3
|
+
class TestMechanizeFormField < Mechanize::TestCase
|
4
4
|
|
5
|
-
def
|
5
|
+
def test_name
|
6
|
+
field = node 'input', 'name' => 'a&b'
|
7
|
+
field = Mechanize::Form::Field.new field
|
8
|
+
|
9
|
+
assert_equal 'a&b', field.name
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_name_entity
|
13
|
+
field = node 'input', 'name' => 'a&b'
|
14
|
+
field = Mechanize::Form::Field.new field
|
15
|
+
|
16
|
+
assert_equal 'a&b', field.name
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_name_entity_numeric
|
20
|
+
field = node 'input', 'name' => 'a&b'
|
21
|
+
field = Mechanize::Form::Field.new field
|
22
|
+
|
23
|
+
assert_equal 'a&b', field.name
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_spaceship
|
6
27
|
doc = Nokogiri::HTML::Document.new
|
7
28
|
node = doc.create_element('input')
|
8
29
|
node['name'] = 'foo'
|
@@ -17,5 +38,26 @@ class TestMechanizeFormField < MiniTest::Unit::TestCase
|
|
17
38
|
assert_equal [b, c].sort, [b, c].sort
|
18
39
|
end
|
19
40
|
|
41
|
+
def test_value
|
42
|
+
field = node 'input'
|
43
|
+
field = Mechanize::Form::Field.new field, 'a&b'
|
44
|
+
|
45
|
+
assert_equal 'a&b', field.value
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_value_entity
|
49
|
+
field = node 'input'
|
50
|
+
field = Mechanize::Form::Field.new field, 'a&b'
|
51
|
+
|
52
|
+
assert_equal 'a&b', field.value
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_value_entity_numeric
|
56
|
+
field = node 'input'
|
57
|
+
field = Mechanize::Form::Field.new field, 'a&b'
|
58
|
+
|
59
|
+
assert_equal 'a&b', field.value
|
60
|
+
end
|
61
|
+
|
20
62
|
end
|
21
63
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'mechanize/test_case'
|
2
|
+
|
3
|
+
class TestMechanizeFormFileUpload < Mechanize::TestCase
|
4
|
+
|
5
|
+
def test_file_name
|
6
|
+
field = node 'input'
|
7
|
+
field = Mechanize::Form::FileUpload.new field, 'a&b'
|
8
|
+
|
9
|
+
assert_equal 'a&b', field.file_name
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_file_name_entity
|
13
|
+
field = node 'input'
|
14
|
+
field = Mechanize::Form::FileUpload.new field, 'a&b'
|
15
|
+
|
16
|
+
assert_equal 'a&b', field.file_name
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'mechanize/test_case'
|
2
2
|
|
3
|
-
class TestMechanizeFormImageButton <
|
3
|
+
class TestMechanizeFormImageButton < Mechanize::TestCase
|
4
4
|
|
5
5
|
def test_query_value
|
6
6
|
button = Mechanize::Form::ImageButton.new 'name' => 'image_button'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'mechanize/test_case'
|
2
|
+
|
3
|
+
class TestMechanizeFormKeygen < Mechanize::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
|
8
|
+
keygen = node('keygen',
|
9
|
+
'name' => 'userkey',
|
10
|
+
'challenge' => 'f4832e1d200df3df8c5c859edcabe52f')
|
11
|
+
|
12
|
+
@keygen = Mechanize::Form::Keygen.new keygen
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_challenge
|
16
|
+
assert_equal "f4832e1d200df3df8c5c859edcabe52f", @keygen.challenge
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_key
|
20
|
+
assert @keygen.key.kind_of?(OpenSSL::PKey::PKey), "Not an OpenSSL key"
|
21
|
+
assert @keygen.key.private?, "Not a private key"
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_spki_signature
|
25
|
+
spki = OpenSSL::Netscape::SPKI.new @keygen.value
|
26
|
+
assert_equal @keygen.challenge, spki.challenge
|
27
|
+
assert_equal @keygen.key.public_key.to_pem, spki.public_key.to_pem
|
28
|
+
assert spki.verify(@keygen.key.public_key)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'mechanize/test_case'
|
2
|
+
|
3
|
+
class TestMechanizeFormMultiSelectList < Mechanize::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
|
8
|
+
page = html_page <<-BODY
|
9
|
+
<form name="form1" method="post" action="/form_post">
|
10
|
+
<select name="select" multiple>
|
11
|
+
<option value="1">Option 1</option>
|
12
|
+
<option value="2" selected>Option 2</option>
|
13
|
+
<option value="3">Option 3</option>
|
14
|
+
<option value="4">Option 4</option>
|
15
|
+
<option value="5">Option 5</option>
|
16
|
+
<option value="6">Option 6</option>
|
17
|
+
</select>
|
18
|
+
</form>
|
19
|
+
BODY
|
20
|
+
|
21
|
+
form = page.forms.first
|
22
|
+
@select = form.fields.first
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_option_with
|
26
|
+
option = @select.option_with :value => '1'
|
27
|
+
|
28
|
+
assert_equal '1', option.value
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_options_with
|
32
|
+
options = @select.options_with :value => /[12]/
|
33
|
+
|
34
|
+
assert_equal 2, options.length
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_query_value
|
38
|
+
assert_equal [%w[select 2]], @select.query_value
|
39
|
+
|
40
|
+
@select.options.last.click
|
41
|
+
|
42
|
+
assert_equal [%w[select 2], %w[select 6]], @select.query_value
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_query_value_empty
|
46
|
+
@select.options.last.click
|
47
|
+
@select.options.last.instance_variable_set :@value, ''
|
48
|
+
|
49
|
+
assert_equal [%w[select 2], ['select', '']], @select.query_value
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_select_all
|
53
|
+
@select.select_all
|
54
|
+
|
55
|
+
assert_equal %w[1 2 3 4 5 6], @select.value
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_select_none
|
59
|
+
@select.select_none
|
60
|
+
|
61
|
+
assert_empty @select.value
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_selected_options
|
65
|
+
assert_equal [@select.options[1]], @select.selected_options
|
66
|
+
|
67
|
+
@select.options.last.click
|
68
|
+
|
69
|
+
assert_equal [@select.options[1], @select.options.last],
|
70
|
+
@select.selected_options
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_value
|
74
|
+
assert_equal %w[2], @select.value
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_value_equals
|
78
|
+
@select.value = %w[a 1 2]
|
79
|
+
|
80
|
+
assert_equal %w[a 1 2], @select.value
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'mechanize/test_case'
|
2
|
+
|
3
|
+
class TestMechanizeFormOption < Mechanize::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
|
8
|
+
page = html_page <<-BODY
|
9
|
+
<form name="form1" method="post" action="/form_post">
|
10
|
+
<select name="select">
|
11
|
+
<option value="1">Option 1</option>
|
12
|
+
<option value="2" selected>Option 2</option>
|
13
|
+
</select>
|
14
|
+
</form>
|
15
|
+
BODY
|
16
|
+
|
17
|
+
form = page.forms.first
|
18
|
+
@select = form.fields.first
|
19
|
+
@option1 = @select.options.first
|
20
|
+
@option2 = @select.options.last
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_value_missing_value
|
24
|
+
option = node 'option'
|
25
|
+
option.inner_html = 'blah'
|
26
|
+
option = Mechanize::Form::Option.new option, nil
|
27
|
+
|
28
|
+
assert_equal 'blah', option.value
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_click
|
32
|
+
@option1.click
|
33
|
+
|
34
|
+
assert @option1.selected?
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_select
|
38
|
+
@option1.select
|
39
|
+
|
40
|
+
assert @option1.selected?
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_unselect
|
44
|
+
@option2.unselect
|
45
|
+
|
46
|
+
refute @option2.selected?
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_selected_eh
|
50
|
+
refute @option1.selected?
|
51
|
+
assert @option2.selected?
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'mechanize/test_case'
|
2
|
+
|
3
|
+
class TestMechanizeFormRadioButton < Mechanize::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
|
8
|
+
@page = html_page <<-BODY
|
9
|
+
<form name="form1" method="post" action="/form_post">
|
10
|
+
<label for="blue">Blue</label>
|
11
|
+
<input type="radio" name="color" value="blue" id="blue">
|
12
|
+
<input type="radio" name="color" value="brown">
|
13
|
+
<input type="radio" name="color" value="green">
|
14
|
+
<input type="radio" name="color" value="red">
|
15
|
+
<input type="radio" name="color" value="yellow">
|
16
|
+
|
17
|
+
<input type="submit" value="Submit">
|
18
|
+
</form>
|
19
|
+
BODY
|
20
|
+
|
21
|
+
@form = @page.forms.first
|
22
|
+
|
23
|
+
@blue = @form.radiobutton_with :value => 'blue'
|
24
|
+
@brown = @form.radiobutton_with :value => 'brown'
|
25
|
+
@green = @form.radiobutton_with :value => 'green'
|
26
|
+
@red = @form.radiobutton_with :value => 'red'
|
27
|
+
@yellow = @form.radiobutton_with :value => 'yellow'
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_check
|
31
|
+
@blue.check
|
32
|
+
|
33
|
+
assert @blue.checked?
|
34
|
+
refute @brown.checked?
|
35
|
+
refute @green.checked?
|
36
|
+
refute @red.checked?
|
37
|
+
refute @yellow.checked?
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_check_multiple
|
41
|
+
@blue.check
|
42
|
+
@brown.check
|
43
|
+
|
44
|
+
refute @blue.checked?
|
45
|
+
assert @brown.checked?
|
46
|
+
refute @green.checked?
|
47
|
+
refute @red.checked?
|
48
|
+
refute @yellow.checked?
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_click
|
52
|
+
@blue.click
|
53
|
+
|
54
|
+
assert @blue.checked?
|
55
|
+
|
56
|
+
@blue.click
|
57
|
+
|
58
|
+
refute @blue.checked?
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_label
|
62
|
+
assert_equal 'Blue', @blue.label.text
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_uncheck
|
66
|
+
@blue.check
|
67
|
+
|
68
|
+
@blue.uncheck
|
69
|
+
|
70
|
+
refute @blue.checked?
|
71
|
+
refute @brown.checked?
|
72
|
+
refute @green.checked?
|
73
|
+
refute @red.checked?
|
74
|
+
refute @yellow.checked?
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|