ryanbriones-ZenTest 3.11.1
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/History.txt +523 -0
- data/Manifest.txt +69 -0
- data/README.txt +110 -0
- data/Rakefile +68 -0
- data/articles/Article.css +721 -0
- data/articles/getting_started_with_autotest.html +532 -0
- data/articles/how_to_use_zentest.txt +393 -0
- data/bin/autotest +55 -0
- data/bin/multiruby +40 -0
- data/bin/multiruby_setup +68 -0
- data/bin/rails_test_audit +80 -0
- data/bin/unit_diff +38 -0
- data/bin/zentest +28 -0
- data/example.txt +42 -0
- data/example1.rb +7 -0
- data/example2.rb +15 -0
- data/example_dot_autotest.rb +45 -0
- data/lib/autotest.rb +654 -0
- data/lib/autotest/autoupdate.rb +26 -0
- data/lib/autotest/camping.rb +37 -0
- data/lib/autotest/cctray.rb +57 -0
- data/lib/autotest/discover.rb +6 -0
- data/lib/autotest/emacs.rb +35 -0
- data/lib/autotest/email_notify.rb +66 -0
- data/lib/autotest/fixtures.rb +12 -0
- data/lib/autotest/growl.rb +28 -0
- data/lib/autotest/heckle.rb +14 -0
- data/lib/autotest/html_report.rb +31 -0
- data/lib/autotest/jabber_notify.rb +111 -0
- data/lib/autotest/kdenotify.rb +14 -0
- data/lib/autotest/menu.rb +51 -0
- data/lib/autotest/migrate.rb +7 -0
- data/lib/autotest/notify.rb +34 -0
- data/lib/autotest/once.rb +9 -0
- data/lib/autotest/pretty.rb +83 -0
- data/lib/autotest/rails.rb +81 -0
- data/lib/autotest/rcov.rb +22 -0
- data/lib/autotest/redgreen.rb +21 -0
- data/lib/autotest/restart.rb +11 -0
- data/lib/autotest/screen.rb +73 -0
- data/lib/autotest/shame.rb +45 -0
- data/lib/autotest/snarl.rb +51 -0
- data/lib/autotest/timestamp.rb +9 -0
- data/lib/functional_test_matrix.rb +92 -0
- data/lib/multiruby.rb +401 -0
- data/lib/test/rails.rb +295 -0
- data/lib/test/rails/controller_test_case.rb +382 -0
- data/lib/test/rails/functional_test_case.rb +79 -0
- data/lib/test/rails/helper_test_case.rb +64 -0
- data/lib/test/rails/ivar_proxy.rb +31 -0
- data/lib/test/rails/pp_html_document.rb +74 -0
- data/lib/test/rails/rake_tasks.rb +50 -0
- data/lib/test/rails/render_tree.rb +93 -0
- data/lib/test/rails/test_case.rb +28 -0
- data/lib/test/rails/view_test_case.rb +597 -0
- data/lib/test/zentest_assertions.rb +134 -0
- data/lib/unit_diff.rb +259 -0
- data/lib/zentest.rb +566 -0
- data/lib/zentest_mapping.rb +99 -0
- data/test/test_autotest.rb +449 -0
- data/test/test_help.rb +36 -0
- data/test/test_rails_autotest.rb +229 -0
- data/test/test_rails_controller_test_case.rb +58 -0
- data/test/test_rails_helper_test_case.rb +48 -0
- data/test/test_rails_view_test_case.rb +275 -0
- data/test/test_unit_diff.rb +319 -0
- data/test/test_zentest.rb +566 -0
- data/test/test_zentest_assertions.rb +128 -0
- data/test/test_zentest_mapping.rb +222 -0
- metadata +151 -0
data/test/test_help.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# ActionPack
|
|
2
|
+
module ActionController; end
|
|
3
|
+
module ActionController::Flash; end
|
|
4
|
+
class ActionController::Flash::FlashHash < Hash; end
|
|
5
|
+
class ActionController::TestSession < Hash; end
|
|
6
|
+
|
|
7
|
+
class ActionController::TestRequest
|
|
8
|
+
attr_accessor :session
|
|
9
|
+
end
|
|
10
|
+
class ActionController::TestResponse; end
|
|
11
|
+
|
|
12
|
+
class ApplicationController; end
|
|
13
|
+
|
|
14
|
+
module ActionView; end
|
|
15
|
+
module ActionView::Helpers; end
|
|
16
|
+
module ActionView::Helpers::ActiveRecordHelper; end
|
|
17
|
+
module ActionView::Helpers::TagHelper; end
|
|
18
|
+
module ActionView::Helpers::TextHelper; end
|
|
19
|
+
module ActionView::Helpers::FormTagHelper; end
|
|
20
|
+
module ActionView::Helpers::FormOptionsHelper; end
|
|
21
|
+
module ActionView::Helpers::FormHelper; end
|
|
22
|
+
module ActionView::Helpers::UrlHelper; end
|
|
23
|
+
module ActionView::Helpers::AssetTagHelper; end
|
|
24
|
+
|
|
25
|
+
class << Test::Unit::TestCase
|
|
26
|
+
attr_accessor :use_transactional_fixtures
|
|
27
|
+
attr_accessor :use_instantiated_fixtures
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# ActionMailer
|
|
31
|
+
module ActionMailer; end
|
|
32
|
+
class ActionMailer::Base
|
|
33
|
+
def self.deliveries=(arg); end unless defined? @@defined
|
|
34
|
+
@@defined = true
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
require 'test/unit' if $0 == __FILE__
|
|
2
|
+
require 'test/test_autotest'
|
|
3
|
+
require 'autotest/rails'
|
|
4
|
+
|
|
5
|
+
class TestRailsAutotest < TestAutotest
|
|
6
|
+
|
|
7
|
+
def setup
|
|
8
|
+
super
|
|
9
|
+
|
|
10
|
+
@test_class = 'RouteTest'
|
|
11
|
+
@test = 'test/unit/route_test.rb'
|
|
12
|
+
@other_test = 'test/other_blah_test.rb'
|
|
13
|
+
@impl = 'app/models/route.rb'
|
|
14
|
+
@inner_test = 'test/outer/inner_test.rb'
|
|
15
|
+
@outer_test = 'test/outer_test.rb'
|
|
16
|
+
@inner_test_class = "OuterTest::InnerTest"
|
|
17
|
+
|
|
18
|
+
@rails_unit_tests = [@test]
|
|
19
|
+
|
|
20
|
+
@rails_controller_tests = %w(test/controllers/admin/themes_controller_test.rb
|
|
21
|
+
test/controllers/articles_controller_test.rb
|
|
22
|
+
test/controllers/dummy_controller_test.rb
|
|
23
|
+
test/controllers/route_controller_test.rb)
|
|
24
|
+
|
|
25
|
+
@rails_view_tests = %w(test/views/admin/themes_view_test.rb
|
|
26
|
+
test/views/articles_view_test.rb
|
|
27
|
+
test/views/layouts_view_test.rb
|
|
28
|
+
test/views/route_view_test.rb)
|
|
29
|
+
|
|
30
|
+
@rails_functional_tests = %w(test/functional/admin/themes_controller_test.rb
|
|
31
|
+
test/functional/articles_controller_test.rb
|
|
32
|
+
test/functional/dummy_controller_test.rb
|
|
33
|
+
test/functional/route_controller_test.rb)
|
|
34
|
+
|
|
35
|
+
# These files aren't put in @file_map, so add them to it
|
|
36
|
+
@extra_files = %w(test/controllers/admin/themes_controller_test.rb
|
|
37
|
+
test/controllers/articles_controller_test.rb
|
|
38
|
+
test/controllers/dummy_controller_test.rb
|
|
39
|
+
test/functional/articles_controller_test.rb
|
|
40
|
+
test/functional/dummy_controller_test.rb
|
|
41
|
+
test/views/admin/themes_view_test.rb
|
|
42
|
+
test/views/articles_view_test.rb
|
|
43
|
+
test/views/layouts_view_test.rb)
|
|
44
|
+
|
|
45
|
+
@files.clear
|
|
46
|
+
|
|
47
|
+
(@rails_unit_tests +
|
|
48
|
+
@rails_controller_tests +
|
|
49
|
+
@rails_view_tests +
|
|
50
|
+
@rails_functional_tests +
|
|
51
|
+
@extra_files +
|
|
52
|
+
[@impl]).flatten.each_with_index do |path, t|
|
|
53
|
+
@files[path] = Time.at(t+1)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
@a.find_order = @files.keys
|
|
57
|
+
@a.last_mtime = @files.values.sort.last
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Overridden from superclass... the scenario just doesn't happen the same way.
|
|
61
|
+
def test_consolidate_failures_multiple_matches
|
|
62
|
+
@test2 = 'test/unit/route_again_test.rb'
|
|
63
|
+
@files[@test2] = Time.at(42)
|
|
64
|
+
@files['app/views/routes/edit.rhtml'] = Time.at(42)
|
|
65
|
+
@files['app/views/routes/list.rhtml'] = Time.at(42)
|
|
66
|
+
|
|
67
|
+
@a.find_order = @files.keys
|
|
68
|
+
|
|
69
|
+
result = @a.consolidate_failures([['test_unmatched', @test_class]])
|
|
70
|
+
expected = {"test/unit/route_test.rb"=>["test_unmatched"]}
|
|
71
|
+
assert_equal expected, result
|
|
72
|
+
assert_equal '', @a.output.string
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_reorder_random
|
|
76
|
+
@a.order = :random
|
|
77
|
+
|
|
78
|
+
srand 42
|
|
79
|
+
expected, size = @files.dup, @files.size
|
|
80
|
+
expected = expected.sort_by { rand(size) }
|
|
81
|
+
|
|
82
|
+
srand 42
|
|
83
|
+
result = @a.reorder(@files.dup)
|
|
84
|
+
|
|
85
|
+
assert_equal expected, result
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_test_files_for
|
|
89
|
+
empty = []
|
|
90
|
+
assert_equal empty, @a.test_files_for('blah.rb')
|
|
91
|
+
assert_equal empty, @a.test_files_for('test_blah.rb')
|
|
92
|
+
|
|
93
|
+
# controllers
|
|
94
|
+
util_test_files_for('app/controllers/admin/themes_controller.rb',
|
|
95
|
+
'test/controllers/admin/themes_controller_test.rb',
|
|
96
|
+
'test/functional/admin/themes_controller_test.rb')
|
|
97
|
+
|
|
98
|
+
util_test_files_for('app/controllers/application.rb',
|
|
99
|
+
@rails_controller_tests,
|
|
100
|
+
@rails_view_tests,
|
|
101
|
+
@rails_functional_tests)
|
|
102
|
+
|
|
103
|
+
util_test_files_for('app/controllers/route_controller.rb',
|
|
104
|
+
'test/controllers/route_controller_test.rb',
|
|
105
|
+
'test/functional/route_controller_test.rb')
|
|
106
|
+
|
|
107
|
+
util_test_files_for('app/controllers/notest_controller.rb')
|
|
108
|
+
|
|
109
|
+
# helpers
|
|
110
|
+
util_test_files_for('app/helpers/application_helper.rb',
|
|
111
|
+
@rails_view_tests,
|
|
112
|
+
@rails_functional_tests)
|
|
113
|
+
|
|
114
|
+
util_test_files_for('app/helpers/route_helper.rb',
|
|
115
|
+
'test/views/route_view_test.rb',
|
|
116
|
+
'test/functional/route_controller_test.rb')
|
|
117
|
+
|
|
118
|
+
# model
|
|
119
|
+
util_test_files_for('app/models/route.rb',
|
|
120
|
+
@test)
|
|
121
|
+
|
|
122
|
+
util_test_files_for('app/models/notest.rb')
|
|
123
|
+
|
|
124
|
+
# views
|
|
125
|
+
util_test_files_for('app/views/layouts/default.rhtml',
|
|
126
|
+
'test/views/layouts_view_test.rb')
|
|
127
|
+
|
|
128
|
+
util_test_files_for('app/views/route/index.rhtml',
|
|
129
|
+
'test/views/route_view_test.rb',
|
|
130
|
+
'test/functional/route_controller_test.rb')
|
|
131
|
+
|
|
132
|
+
util_test_files_for('app/views/route/xml.rxml',
|
|
133
|
+
'test/views/route_view_test.rb',
|
|
134
|
+
'test/functional/route_controller_test.rb')
|
|
135
|
+
|
|
136
|
+
util_test_files_for('app/views/shared/notest.rhtml')
|
|
137
|
+
|
|
138
|
+
util_test_files_for('app/views/articles/flag.rhtml',
|
|
139
|
+
'test/views/articles_view_test.rb',
|
|
140
|
+
'test/functional/articles_controller_test.rb')
|
|
141
|
+
|
|
142
|
+
# tests
|
|
143
|
+
util_test_files_for('test/fixtures/routes.yml',
|
|
144
|
+
@test,
|
|
145
|
+
'test/controllers/route_controller_test.rb',
|
|
146
|
+
'test/views/route_view_test.rb',
|
|
147
|
+
'test/functional/route_controller_test.rb')
|
|
148
|
+
|
|
149
|
+
util_test_files_for('test/test_helper.rb',
|
|
150
|
+
@rails_unit_tests, @rails_controller_tests,
|
|
151
|
+
@rails_view_tests, @rails_functional_tests)
|
|
152
|
+
|
|
153
|
+
util_test_files_for(@test, @test)
|
|
154
|
+
|
|
155
|
+
util_test_files_for('test/controllers/route_controller_test.rb',
|
|
156
|
+
'test/controllers/route_controller_test.rb')
|
|
157
|
+
|
|
158
|
+
util_test_files_for('test/views/route_view_test.rb',
|
|
159
|
+
'test/views/route_view_test.rb')
|
|
160
|
+
|
|
161
|
+
util_test_files_for('test/functional/route_controller_test.rb',
|
|
162
|
+
'test/functional/route_controller_test.rb')
|
|
163
|
+
|
|
164
|
+
util_test_files_for('test/functional/admin/themes_controller_test.rb',
|
|
165
|
+
'test/functional/admin/themes_controller_test.rb')
|
|
166
|
+
|
|
167
|
+
# global conf thingies
|
|
168
|
+
util_test_files_for('config/boot.rb',
|
|
169
|
+
@rails_unit_tests, @rails_controller_tests,
|
|
170
|
+
@rails_view_tests, @rails_functional_tests)
|
|
171
|
+
|
|
172
|
+
util_test_files_for('config/database.yml',
|
|
173
|
+
@rails_unit_tests, @rails_controller_tests,
|
|
174
|
+
@rails_view_tests, @rails_functional_tests)
|
|
175
|
+
|
|
176
|
+
util_test_files_for('config/environment.rb',
|
|
177
|
+
@rails_unit_tests, @rails_controller_tests,
|
|
178
|
+
@rails_view_tests, @rails_functional_tests)
|
|
179
|
+
|
|
180
|
+
util_test_files_for('config/environments/test.rb',
|
|
181
|
+
@rails_unit_tests, @rails_controller_tests,
|
|
182
|
+
@rails_view_tests, @rails_functional_tests)
|
|
183
|
+
|
|
184
|
+
util_test_files_for('config/routes.rb',
|
|
185
|
+
@rails_controller_tests,
|
|
186
|
+
@rails_view_tests, @rails_functional_tests)
|
|
187
|
+
|
|
188
|
+
# ignored crap
|
|
189
|
+
util_test_files_for('vendor/plugins/cartographer/lib/keys.rb')
|
|
190
|
+
|
|
191
|
+
util_test_files_for('Rakefile')
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def test_consolidate_failures_multiple_matches_before
|
|
195
|
+
@test_class = 'BlahTest'
|
|
196
|
+
@files.clear
|
|
197
|
+
@files['app/model/blah.rb'] = Time.at(42)
|
|
198
|
+
@files['app/model/different_blah.rb'] = Time.at(42)
|
|
199
|
+
@files['test/unit/blah_test.rb'] = Time.at(42)
|
|
200
|
+
@files['test/unit/different_blah_test.rb'] = Time.at(42)
|
|
201
|
+
|
|
202
|
+
@a.find_order = @files.keys
|
|
203
|
+
|
|
204
|
+
result = @a.consolidate_failures([['test_matched', @test_class]])
|
|
205
|
+
expected = { 'test/unit/blah_test.rb' => [ 'test_matched' ] }
|
|
206
|
+
assert_equal expected, result
|
|
207
|
+
assert_equal "", @a.output.string
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def util_test_files_for(file, *expected)
|
|
211
|
+
assert_equal(expected.flatten.sort.uniq,
|
|
212
|
+
@a.test_files_for(file).sort.uniq, "tests for #{file}")
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def test_path_to_classname
|
|
216
|
+
# rails
|
|
217
|
+
util_path_to_classname 'BlahTest', 'test/blah_test.rb'
|
|
218
|
+
util_path_to_classname 'BlahTest', 'test/unit/blah_test.rb'
|
|
219
|
+
util_path_to_classname 'BlahTest', 'test/functional/blah_test.rb'
|
|
220
|
+
util_path_to_classname 'BlahTest', 'test/integration/blah_test.rb'
|
|
221
|
+
util_path_to_classname 'BlahTest', 'test/views/blah_test.rb'
|
|
222
|
+
util_path_to_classname 'BlahTest', 'test/controllers/blah_test.rb'
|
|
223
|
+
util_path_to_classname 'BlahTest', 'test/helpers/blah_test.rb'
|
|
224
|
+
|
|
225
|
+
util_path_to_classname('OuterTest::InnerTest',
|
|
226
|
+
'test/controllers/outer/inner_test.rb')
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'test/zentest_assertions'
|
|
3
|
+
|
|
4
|
+
unless defined? $TESTING_RTC then
|
|
5
|
+
$TESTING_RTC = true
|
|
6
|
+
|
|
7
|
+
begin
|
|
8
|
+
require 'test/rails'
|
|
9
|
+
rescue LoadError, NameError
|
|
10
|
+
$TESTING_RTC = false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class TRController < ApplicationController
|
|
15
|
+
end if $TESTING_RTC
|
|
16
|
+
|
|
17
|
+
class TestRailsControllerTestCase < Test::Rails::ControllerTestCase
|
|
18
|
+
|
|
19
|
+
def setup
|
|
20
|
+
@controller_class_name = 'TRController'
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def assigns
|
|
25
|
+
{ 'ivar' => 'value' }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_assert_assigned
|
|
29
|
+
assert_assigned :ivar
|
|
30
|
+
assert_assigned :ivar, 'value'
|
|
31
|
+
|
|
32
|
+
assert_raise Test::Unit::AssertionFailedError do
|
|
33
|
+
assert_assigned :no_ivar
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
e = assert_raise Test::Unit::AssertionFailedError do
|
|
37
|
+
assert_assigned :ivar, 'bad_value'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
expected = <<-EOF.strip
|
|
41
|
+
assert_assigned :ivar.
|
|
42
|
+
<\"bad_value\"> expected but was
|
|
43
|
+
<\"value\">.
|
|
44
|
+
EOF
|
|
45
|
+
|
|
46
|
+
assert_equal expected, e.message
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_deny_assigned
|
|
50
|
+
deny_assigned :no_ivar
|
|
51
|
+
|
|
52
|
+
assert_raise Test::Unit::AssertionFailedError do
|
|
53
|
+
deny_assigned :ivar
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end if $TESTING_RTC
|
|
58
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'test/zentest_assertions'
|
|
3
|
+
|
|
4
|
+
unless defined? $TESTING_RTC then
|
|
5
|
+
$TESTING_RTC = true
|
|
6
|
+
|
|
7
|
+
begin
|
|
8
|
+
require 'test/rails'
|
|
9
|
+
rescue LoadError, NameError
|
|
10
|
+
$TESTING_RTC = false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
begin
|
|
15
|
+
module TRHelper
|
|
16
|
+
def tr_helper; end
|
|
17
|
+
end
|
|
18
|
+
class TRHelperTest < Test::Rails::HelperTestCase; end
|
|
19
|
+
rescue RuntimeError
|
|
20
|
+
end if $TESTING_RTC
|
|
21
|
+
|
|
22
|
+
begin
|
|
23
|
+
module Widgets; end
|
|
24
|
+
module Widgets::SomeHelper
|
|
25
|
+
def widgets_some_helper; end
|
|
26
|
+
end
|
|
27
|
+
class Widgets::SomeHelperTest < Test::Rails::HelperTestCase; end
|
|
28
|
+
rescue RuntimeError
|
|
29
|
+
end if $TESTING_RTC
|
|
30
|
+
|
|
31
|
+
class TestRailsHelperTestCase < Test::Unit::TestCase
|
|
32
|
+
|
|
33
|
+
def test_self_inherited
|
|
34
|
+
assert defined? TRHelperTest
|
|
35
|
+
|
|
36
|
+
assert_includes TRHelperTest.instance_methods, 'tr_helper'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_self_inherited_namespaced
|
|
40
|
+
assert defined? Widgets
|
|
41
|
+
assert defined? Widgets::SomeHelperTest
|
|
42
|
+
|
|
43
|
+
assert_includes(Widgets::SomeHelperTest.instance_methods,
|
|
44
|
+
'widgets_some_helper')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end if $TESTING_RTC
|
|
48
|
+
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'test/zentest_assertions'
|
|
3
|
+
|
|
4
|
+
unless defined? $TESTING_RTC then
|
|
5
|
+
$TESTING_RTC = true
|
|
6
|
+
|
|
7
|
+
begin
|
|
8
|
+
require 'test/rails'
|
|
9
|
+
rescue LoadError, NameError
|
|
10
|
+
$TESTING_RTC = false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module Rails
|
|
15
|
+
module VERSION
|
|
16
|
+
STRING = '99.99.99' unless defined? STRING # HACK
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class TestRailsViewTestCase < Test::Rails::ViewTestCase
|
|
21
|
+
|
|
22
|
+
def setup
|
|
23
|
+
@assert_tag = []
|
|
24
|
+
@assert_no_tag = []
|
|
25
|
+
|
|
26
|
+
@assert_select = []
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_assert_field
|
|
30
|
+
assert_field :text, :game, :amount
|
|
31
|
+
|
|
32
|
+
assert_equal 2, @assert_select.length
|
|
33
|
+
|
|
34
|
+
expected = ["input[type='text'][name='game[amount]']"]
|
|
35
|
+
|
|
36
|
+
assert_equal expected, @assert_select.first
|
|
37
|
+
|
|
38
|
+
expected = ["label[for='game_amount']"]
|
|
39
|
+
|
|
40
|
+
assert_equal expected, @assert_select.last
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_assert_field_form
|
|
44
|
+
assert_field '/game/save', :text, :game, :amount
|
|
45
|
+
|
|
46
|
+
assert_equal 4, @assert_select.length
|
|
47
|
+
|
|
48
|
+
assert_equal @assert_select.shift, ["form[action='/game/save']"]
|
|
49
|
+
assert_equal(@assert_select.shift,
|
|
50
|
+
["input[type='text'][name='game[amount]']"])
|
|
51
|
+
|
|
52
|
+
assert_equal @assert_select.shift, ["form[action='/game/save']"]
|
|
53
|
+
assert_equal @assert_select.shift, ["label[for='game_amount']"]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_assert_form
|
|
57
|
+
assert_form '/game/save'
|
|
58
|
+
|
|
59
|
+
assert_equal 1, @assert_select.length
|
|
60
|
+
assert_equal ["form[action='/game/save']"], @assert_select.first
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_assert_form_method
|
|
64
|
+
assert_form '/game/save', :post
|
|
65
|
+
|
|
66
|
+
assert_equal 1, @assert_select.length
|
|
67
|
+
assert_equal ["form[action='/game/save'][method='post']"],
|
|
68
|
+
@assert_select.first
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_assert_form_enctype
|
|
72
|
+
assert_form '/game/save', nil, 'multipart/form-data'
|
|
73
|
+
|
|
74
|
+
assert_equal 1, @assert_select.length
|
|
75
|
+
assert_equal ["form[action='/game/save'][enctype='multipart/form-data']"],
|
|
76
|
+
@assert_select.first
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_assert_h
|
|
80
|
+
assert_h 1, 'hi'
|
|
81
|
+
|
|
82
|
+
assert_equal [['h1', { :text => 'hi' }]], @assert_select
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_assert_img
|
|
86
|
+
assert_image '/images/bucket.jpg'
|
|
87
|
+
|
|
88
|
+
assert_equal [["img[src='/images/bucket.jpg']"]], @assert_select
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_assert_input
|
|
92
|
+
assert_input :text, 'game[amount]'
|
|
93
|
+
|
|
94
|
+
assert_equal 1, @assert_select.length
|
|
95
|
+
assert_equal ["input[type='text'][name='game[amount]']"],
|
|
96
|
+
@assert_select.first
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_assert_input_form
|
|
100
|
+
assert_input '/game/save', :text, 'game[amount]'
|
|
101
|
+
|
|
102
|
+
assert_equal 2, @assert_select.length
|
|
103
|
+
assert_equal ["form[action='/game/save']"], @assert_select.shift
|
|
104
|
+
assert_equal ["input[type='text'][name='game[amount]']"],
|
|
105
|
+
@assert_select.shift
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def test_assert_input_value
|
|
109
|
+
assert_input :text, 'game[amount]', 5
|
|
110
|
+
|
|
111
|
+
expected = ["input[type='text'][name='game[amount]'][value='5']"]
|
|
112
|
+
|
|
113
|
+
assert_equal 1, @assert_select.length
|
|
114
|
+
assert_equal expected, @assert_select.first
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_assert_label
|
|
118
|
+
assert_label 'game_amount'
|
|
119
|
+
|
|
120
|
+
expected = ["label[for='game_amount']"]
|
|
121
|
+
|
|
122
|
+
assert_equal 1, @assert_select.length
|
|
123
|
+
assert_equal expected, @assert_select.first
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def test_assert_label_form
|
|
127
|
+
assert_label '/game/save', 'game_amount'
|
|
128
|
+
|
|
129
|
+
assert_equal 2, @assert_select.length
|
|
130
|
+
assert_equal ["form[action='/game/save']"], @assert_select.shift
|
|
131
|
+
assert_equal ["label[for='game_amount']"], @assert_select.shift
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def test_assert_links_to
|
|
135
|
+
assert_links_to '/game/show/1', 'hi'
|
|
136
|
+
|
|
137
|
+
expected = ["a[href='/game/show/1']", { :text => 'hi' }]
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
assert_equal 1, @assert_select.length
|
|
141
|
+
assert_equal expected, @assert_select.first
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_assert_multipart_form
|
|
145
|
+
assert_multipart_form '/game/save'
|
|
146
|
+
|
|
147
|
+
expected = [
|
|
148
|
+
"form[action='/game/save'][method='post'][enctype='multipart/form-data']"
|
|
149
|
+
]
|
|
150
|
+
|
|
151
|
+
assert_equal 1, @assert_select.length
|
|
152
|
+
assert_equal expected, @assert_select.first
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def test_assert_post_form
|
|
156
|
+
assert_post_form '/game/save'
|
|
157
|
+
|
|
158
|
+
expected = ["form[action='/game/save'][method='post']"]
|
|
159
|
+
|
|
160
|
+
assert_equal 1, @assert_select.length
|
|
161
|
+
assert_equal expected, @assert_select.first
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def test_assert_select_tag
|
|
165
|
+
assert_select_tag :game, :location_id,
|
|
166
|
+
'Ballet' => 1, 'Guaymas' => 2
|
|
167
|
+
|
|
168
|
+
assert_equal 2, @assert_select.length
|
|
169
|
+
|
|
170
|
+
assert_include(@assert_select,
|
|
171
|
+
["select[name='game[location_id]'] option[value='2']",
|
|
172
|
+
{ :text => 'Guaymas' }])
|
|
173
|
+
assert_include(@assert_select,
|
|
174
|
+
["select[name='game[location_id]'] option[value='1']",
|
|
175
|
+
{ :text => 'Ballet' }])
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def test_assert_select_tag_form
|
|
179
|
+
assert_select_tag '/game/save', :game, :location_id,
|
|
180
|
+
'Ballet' => 1, 'Guaymas' => 2
|
|
181
|
+
|
|
182
|
+
assert_equal 4, @assert_select.length
|
|
183
|
+
|
|
184
|
+
assert_include @assert_select, ["form[action='/game/save']"]
|
|
185
|
+
assert_include(@assert_select,
|
|
186
|
+
["select[name='game[location_id]'] option[value='2']",
|
|
187
|
+
{ :text => 'Guaymas' }])
|
|
188
|
+
assert_include @assert_select, ["form[action='/game/save']"]
|
|
189
|
+
assert_include(@assert_select,
|
|
190
|
+
["select[name='game[location_id]'] option[value='1']",
|
|
191
|
+
{ :text => 'Ballet' }])
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def test_assert_submit
|
|
195
|
+
assert_submit 'Save!'
|
|
196
|
+
|
|
197
|
+
assert_equal 1, @assert_select.length
|
|
198
|
+
assert_equal ["input[type='submit'][value='Save!']"], @assert_select.first
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def test_assert_submit_form
|
|
202
|
+
assert_submit '/game/save', 'Save!'
|
|
203
|
+
|
|
204
|
+
assert_equal 2, @assert_select.length
|
|
205
|
+
assert_equal ["form[action='/game/save']"], @assert_select.shift
|
|
206
|
+
assert_equal ["input[type='submit'][value='Save!']"], @assert_select.shift
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def test_assert_tag_in_form
|
|
210
|
+
assert_tag_in_form '/game/save', :tag => 'input'
|
|
211
|
+
|
|
212
|
+
expected = {
|
|
213
|
+
:tag => "form",
|
|
214
|
+
:attributes => { :action => "/game/save" },
|
|
215
|
+
:descendant => { :tag => "input" },
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
assert_equal 1, @assert_tag.length
|
|
219
|
+
assert_equal expected, @assert_tag.first
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def test_assert_text_area
|
|
223
|
+
assert_text_area 'post[body]'
|
|
224
|
+
|
|
225
|
+
assert_equal 1, @assert_select.length
|
|
226
|
+
assert_equal ["textarea[name='post[body]']"], @assert_select.shift
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def test_assert_text_area_body
|
|
230
|
+
assert_text_area 'post[body]', 'OMG!1! that skank stole my BF!~1!'
|
|
231
|
+
|
|
232
|
+
assert_equal 1, @assert_select.length
|
|
233
|
+
assert_equal ["textarea[name='post[body]']",
|
|
234
|
+
{ :text => 'OMG!1! that skank stole my BF!~1!' }],
|
|
235
|
+
@assert_select.shift
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def test_assert_text_area_form
|
|
239
|
+
assert_text_area '/post/save', 'post[body]'
|
|
240
|
+
|
|
241
|
+
assert_equal 2, @assert_select.length
|
|
242
|
+
assert_equal ["form[action='/post/save']"], @assert_select.shift
|
|
243
|
+
assert_equal ["textarea[name='post[body]']"], @assert_select.shift
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def test_assert_title
|
|
247
|
+
assert_title 'hi'
|
|
248
|
+
|
|
249
|
+
assert_equal [['title', { :text => 'hi' }]], @assert_select
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
def test_deny_links_to
|
|
253
|
+
deny_links_to '/game/show/1', 'hi'
|
|
254
|
+
|
|
255
|
+
expected = ["a[href='/game/show/1']", { :text => 'hi', :count => 0 }]
|
|
256
|
+
|
|
257
|
+
assert_equal 1, @assert_select.length
|
|
258
|
+
assert_equal expected, @assert_select.first
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def assert_tag(arg)
|
|
262
|
+
@assert_tag << arg
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
def assert_no_tag(arg)
|
|
266
|
+
@assert_no_tag << arg
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
def assert_select(*args)
|
|
270
|
+
@assert_select << args
|
|
271
|
+
yield if block_given?
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
end if $TESTING_RTC
|
|
275
|
+
|