minitest-rails 5.2.0 → 6.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/README.md +22 -5
- data/lib/generators/minitest/install/install_generator.rb +1 -0
- data/lib/generators/minitest/install/templates/test/channels/application_cable/connection_test.rb.tt +23 -0
- data/lib/generators/minitest/install/templates/test/test_helper.rb.tt +7 -0
- data/lib/minitest/rails.rb +34 -0
- data/lib/minitest/rails/assertions.rb +1 -0
- data/lib/minitest/rails/assertions/action_cable.rb +232 -0
- data/lib/minitest/rails/assertions/action_mailer.rb +5 -5
- data/lib/minitest/rails/assertions/active_support.rb +4 -4
- data/lib/minitest/rails/capybara.rb +1 -0
- data/lib/minitest/rails/expectations.rb +1 -0
- data/lib/minitest/rails/expectations/action_cable.rb +197 -0
- data/lib/minitest/rails/expectations/action_mailer.rb +5 -5
- data/lib/minitest/rails/expectations/active_support.rb +4 -4
- data/lib/minitest/rails/parallelize.rb +41 -0
- data/lib/minitest/rails/version.rb +1 -1
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a17c39422e4e1c7ccad8d53a784d0bda53d371331b3a351fbd4b5415d336f9b
|
4
|
+
data.tar.gz: 40367011c49265b5e634369a8fed095c40a2c4c93ad4cd38ca1941a489107837
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d049c84f5086d1b210e7881f4f51d165f53fc1494377bca532111a1ec239f443fccd930b1abdb8736ae20f2ccb8e5e825a35b156588c4e7d7b646385106872c8
|
7
|
+
data.tar.gz: '09a8905547e4a1325c4093fed20e68a3019ada1b8e52fa2dff6472d8facb087a8c098f876988d6e632fa0d58e029d50f592175a022a015a3acbdc8e387262528'
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# minitest-rails
|
2
2
|
|
3
|
-
Minitest integration for Rails
|
3
|
+
Minitest integration for Rails 6.0
|
4
4
|
|
5
5
|
[![Build Status](https://secure.travis-ci.org/blowmage/minitest-rails.png)](http://travis-ci.org/blowmage/minitest-rails)
|
6
6
|
[![Code Climate](https://codeclimate.com/github/blowmage/minitest-rails.png)](https://codeclimate.com/github/blowmage/minitest-rails)
|
@@ -19,13 +19,30 @@ Create a new rails app:
|
|
19
19
|
|
20
20
|
`rails new MyApp`
|
21
21
|
|
22
|
-
###
|
22
|
+
### Choosing a version
|
23
23
|
|
24
|
-
|
25
|
-
gem by adding the following to your Gemfile:
|
24
|
+
If you are running Rails 6.0 prerelease, set the gem using the github repo in the Gemfile:
|
26
25
|
|
27
26
|
```ruby
|
28
|
-
gem "minitest-rails",
|
27
|
+
gem "minitest-rails", github: "blowmage/minitest-rails"
|
28
|
+
```
|
29
|
+
|
30
|
+
If you are running Rails 5.x, specify a 3.x release in the Gemfile:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
gem "minitest-rails", "~> 3.0"
|
34
|
+
```
|
35
|
+
|
36
|
+
If you are running Rails 4.1 or 4.2, specify a 2.x release in the Gemfile:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
gem "minitest-rails", "~> 2.0"
|
40
|
+
```
|
41
|
+
|
42
|
+
If you are running Rails 4.0 or earlier, specify a 1.x release in the Gemfile:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
gem "minitest-rails", "~> 1.0"
|
29
46
|
```
|
30
47
|
|
31
48
|
### Installing
|
@@ -26,6 +26,7 @@ module Minitest
|
|
26
26
|
empty_directory_with_keep_file "test/helpers"
|
27
27
|
empty_directory_with_keep_file "test/integration"
|
28
28
|
|
29
|
+
template "test/channels/application_cable/connection_test.rb"
|
29
30
|
template "test/application_system_test_case.rb"
|
30
31
|
template "test/test_helper.rb"
|
31
32
|
end
|
data/lib/generators/minitest/install/templates/test/channels/application_cable/connection_test.rb.tt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
<%- if options[:spec] -%>
|
4
|
+
describe "ApplicationCable Connection", :connection do
|
5
|
+
# it "connects with cookies" do
|
6
|
+
# cookies.signed[:user_id] = 42
|
7
|
+
#
|
8
|
+
# connect
|
9
|
+
#
|
10
|
+
# connection.user_id.must_equal "42"
|
11
|
+
# end
|
12
|
+
end
|
13
|
+
<%- else -%>
|
14
|
+
class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
|
15
|
+
# def test_connects_with_cookies
|
16
|
+
# cookies.signed[:user_id] = 42
|
17
|
+
#
|
18
|
+
# connect
|
19
|
+
#
|
20
|
+
# assert_equal connection.user_id, "42"
|
21
|
+
# end
|
22
|
+
end
|
23
|
+
<%- end -%>
|
@@ -7,6 +7,13 @@ require "minitest/rails"
|
|
7
7
|
# ENV["MT_NO_EXPECTATIONS"] = true
|
8
8
|
|
9
9
|
class ActiveSupport::TestCase
|
10
|
+
# Run tests in parallel with specified workers
|
11
|
+
<% if defined?(JRUBY_VERSION) || Gem.win_platform? -%>
|
12
|
+
parallelize(workers: :number_of_processors, with: :threads)
|
13
|
+
<%- else -%>
|
14
|
+
parallelize(workers: :number_of_processors)
|
15
|
+
<% end -%>
|
16
|
+
|
10
17
|
<% unless options[:skip_active_record] -%>
|
11
18
|
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
|
12
19
|
fixtures :all
|
data/lib/minitest/rails.rb
CHANGED
@@ -106,6 +106,34 @@ class Rails::Generators::TestCase
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
+
if defined? ActionCable
|
110
|
+
# TODO: require?
|
111
|
+
|
112
|
+
class ActionCable::Channel::TestCase
|
113
|
+
# Use AC::Ch::TC for the base class when describing a channel
|
114
|
+
register_spec_type(self) do |desc|
|
115
|
+
desc < ActionCable::Channel::Base if desc.is_a?(Class)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Use AC::Ch::TC for the base class when described using :channel
|
119
|
+
register_spec_type(self) do |_desc, *addl|
|
120
|
+
addl.include? :channel
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class ActionCable::Connection::TestCase
|
125
|
+
# Use AC::Co::TC for the base class when describing a connection
|
126
|
+
register_spec_type(self) do |desc|
|
127
|
+
desc < ActionCable::Connection::Base if desc.is_a?(Class)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Use AC::Co::TC for the base class when described using :connection
|
131
|
+
register_spec_type(self) do |_desc, *addl|
|
132
|
+
addl.include? :connection
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
109
137
|
################################################################################
|
110
138
|
# Assertions and Expectations
|
111
139
|
################################################################################
|
@@ -113,6 +141,12 @@ end
|
|
113
141
|
require "minitest/rails/assertions"
|
114
142
|
require "minitest/rails/expectations"
|
115
143
|
|
144
|
+
################################################################################
|
145
|
+
# Support Rails parallelize
|
146
|
+
################################################################################
|
147
|
+
|
148
|
+
require "minitest/rails/parallelize"
|
149
|
+
|
116
150
|
# :stopdoc:
|
117
151
|
|
118
152
|
################################################################################
|
@@ -2,4 +2,5 @@ require "minitest/rails/assertions/active_support"
|
|
2
2
|
require "minitest/rails/assertions/action_view"
|
3
3
|
require "minitest/rails/assertions/action_dispatch"
|
4
4
|
require "minitest/rails/assertions/active_job" if defined? ActiveJob
|
5
|
+
require "minitest/rails/assertions/action_cable" if defined? ActionCable
|
5
6
|
require "minitest/rails/assertions/action_mailer" if defined? ActionMailer
|
@@ -0,0 +1,232 @@
|
|
1
|
+
class ActionCable::TestCase
|
2
|
+
##
|
3
|
+
# Asserts that the number of broadcasted messages to the stream matches the given number.
|
4
|
+
#
|
5
|
+
# def test_broadcasts
|
6
|
+
# assert_broadcasts 'messages', 0
|
7
|
+
# ActionCable.server.broadcast 'messages', { text: 'hello' }
|
8
|
+
# assert_broadcasts 'messages', 1
|
9
|
+
# ActionCable.server.broadcast 'messages', { text: 'world' }
|
10
|
+
# assert_broadcasts 'messages', 2
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# If a block is passed, that block should cause the specified number of
|
14
|
+
# messages to be broadcasted.
|
15
|
+
#
|
16
|
+
# def test_broadcasts_again
|
17
|
+
# assert_broadcasts('messages', 1) do
|
18
|
+
# ActionCable.server.broadcast 'messages', { text: 'hello' }
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# assert_broadcasts('messages', 2) do
|
22
|
+
# ActionCable.server.broadcast 'messages', { text: 'hi' }
|
23
|
+
# ActionCable.server.broadcast 'messages', { text: 'how are you?' }
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# See also Minitest::Rails::Expectations::ActionCable::TestHelper#must_have_broadcasts
|
28
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_broadcasts
|
29
|
+
#
|
30
|
+
# :method: assert_broadcasts
|
31
|
+
# :call-seq: assert_broadcasts(stream, number)
|
32
|
+
|
33
|
+
##
|
34
|
+
# Asserts that no messages have been sent to the stream.
|
35
|
+
#
|
36
|
+
# def test_no_broadcasts
|
37
|
+
# refute_broadcasts 'messages'
|
38
|
+
# ActionCable.server.broadcast 'messages', { text: 'hi' }
|
39
|
+
# assert_broadcasts 'messages', 1
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# If a block is passed, that block should not cause any message to be sent.
|
43
|
+
#
|
44
|
+
# def test_broadcasts_again
|
45
|
+
# refute_broadcasts 'messages' do
|
46
|
+
# # No job messages should be sent from this block
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
# Note: This assertion is simply a shortcut for:
|
51
|
+
#
|
52
|
+
# assert_broadcasts 'messages', 0, &block
|
53
|
+
#
|
54
|
+
# See also Minitest::Rails::Expectations::ActionCable::TestHelper#wont_have_broadcasts
|
55
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_no_broadcasts
|
56
|
+
#
|
57
|
+
# :method: refute_broadcasts
|
58
|
+
# :call-seq: refute_broadcasts(stream, &block)
|
59
|
+
alias refute_broadcasts assert_no_broadcasts
|
60
|
+
|
61
|
+
##
|
62
|
+
# Asserts that the specified message has been sent to the stream.
|
63
|
+
#
|
64
|
+
# def test_assert_transmitted_message
|
65
|
+
# ActionCable.server.broadcast 'messages', text: 'hello'
|
66
|
+
# assert_broadcast_on('messages', text: 'hello')
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# If a block is passed, that block should cause a message with the specified data to be sent.
|
70
|
+
#
|
71
|
+
# def test_assert_broadcast_on_again
|
72
|
+
# assert_broadcast_on('messages', text: 'hello') do
|
73
|
+
# ActionCable.server.broadcast 'messages', text: 'hello'
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# See also Minitest::Rails::Expectations::ActionCable::TestHelper#must_broadcast_on
|
78
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_broadcast_on
|
79
|
+
#
|
80
|
+
# :method: assert_broadcast_on
|
81
|
+
# :call-seq: assert_broadcast_on(stream, data)
|
82
|
+
end
|
83
|
+
|
84
|
+
class ActionCable::Channel::TestCase
|
85
|
+
##
|
86
|
+
# Asserts that the number of broadcasted messages to the stream matches the given number.
|
87
|
+
#
|
88
|
+
# def test_broadcasts
|
89
|
+
# assert_broadcasts 'messages', 0
|
90
|
+
# ActionCable.server.broadcast 'messages', { text: 'hello' }
|
91
|
+
# assert_broadcasts 'messages', 1
|
92
|
+
# ActionCable.server.broadcast 'messages', { text: 'world' }
|
93
|
+
# assert_broadcasts 'messages', 2
|
94
|
+
# end
|
95
|
+
#
|
96
|
+
# If a block is passed, that block should cause the specified number of
|
97
|
+
# messages to be broadcasted.
|
98
|
+
#
|
99
|
+
# def test_broadcasts_again
|
100
|
+
# assert_broadcasts('messages', 1) do
|
101
|
+
# ActionCable.server.broadcast 'messages', { text: 'hello' }
|
102
|
+
# end
|
103
|
+
#
|
104
|
+
# assert_broadcasts('messages', 2) do
|
105
|
+
# ActionCable.server.broadcast 'messages', { text: 'hi' }
|
106
|
+
# ActionCable.server.broadcast 'messages', { text: 'how are you?' }
|
107
|
+
# end
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
# See also Minitest::Rails::Expectations::ActionCable::TestHelper#must_have_broadcasts
|
111
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_broadcasts
|
112
|
+
#
|
113
|
+
# :method: assert_broadcasts
|
114
|
+
# :call-seq: assert_broadcasts(stream, number)
|
115
|
+
|
116
|
+
##
|
117
|
+
# Asserts that no messages have been sent to the stream.
|
118
|
+
#
|
119
|
+
# def test_no_broadcasts
|
120
|
+
# refute_broadcasts 'messages'
|
121
|
+
# ActionCable.server.broadcast 'messages', { text: 'hi' }
|
122
|
+
# assert_broadcasts 'messages', 1
|
123
|
+
# end
|
124
|
+
#
|
125
|
+
# If a block is passed, that block should not cause any message to be sent.
|
126
|
+
#
|
127
|
+
# def test_broadcasts_again
|
128
|
+
# refute_broadcasts 'messages' do
|
129
|
+
# # No job messages should be sent from this block
|
130
|
+
# end
|
131
|
+
# end
|
132
|
+
#
|
133
|
+
# Note: This assertion is simply a shortcut for:
|
134
|
+
#
|
135
|
+
# assert_broadcasts 'messages', 0, &block
|
136
|
+
#
|
137
|
+
# See also Minitest::Rails::Expectations::ActionCable::TestHelper#wont_have_broadcasts
|
138
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_no_broadcasts
|
139
|
+
#
|
140
|
+
# :method: refute_broadcasts
|
141
|
+
# :call-seq: refute_broadcasts(stream, &block)
|
142
|
+
alias refute_broadcasts assert_no_broadcasts
|
143
|
+
|
144
|
+
##
|
145
|
+
# Asserts that the specified message has been sent to the stream.
|
146
|
+
#
|
147
|
+
# def test_assert_transmitted_message
|
148
|
+
# ActionCable.server.broadcast 'messages', text: 'hello'
|
149
|
+
# assert_broadcast_on('messages', text: 'hello')
|
150
|
+
# end
|
151
|
+
#
|
152
|
+
# If a block is passed, that block should cause a message with the specified data to be sent.
|
153
|
+
#
|
154
|
+
# def test_assert_broadcast_on_again
|
155
|
+
# assert_broadcast_on('messages', text: 'hello') do
|
156
|
+
# ActionCable.server.broadcast 'messages', text: 'hello'
|
157
|
+
# end
|
158
|
+
# end
|
159
|
+
#
|
160
|
+
# See also Minitest::Rails::Expectations::ActionCable::TestHelper#must_broadcast_on
|
161
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_broadcast_on
|
162
|
+
#
|
163
|
+
# :method: assert_broadcast_on
|
164
|
+
# :call-seq: assert_broadcast_on(stream, data)
|
165
|
+
|
166
|
+
##
|
167
|
+
# Asserts that no streams have been started.
|
168
|
+
#
|
169
|
+
# def test_assert_no_started_stream
|
170
|
+
# subscribe
|
171
|
+
# assert_no_streams
|
172
|
+
# end
|
173
|
+
#
|
174
|
+
# See also Minitest::Rails::Expectations::ActionCable::Channel#wont_have_streams
|
175
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Channel/TestCase/Behavior.html#method-i-assert_no_streams
|
176
|
+
#
|
177
|
+
# :method: refute_streams
|
178
|
+
alias refute_streams assert_no_streams
|
179
|
+
|
180
|
+
##
|
181
|
+
# Asserts that the specified stream has been started.
|
182
|
+
#
|
183
|
+
# def test_assert_started_stream
|
184
|
+
# subscribe
|
185
|
+
# assert_has_stream 'messages'
|
186
|
+
# end
|
187
|
+
#
|
188
|
+
# See also Minitest::Rails::Expectations::ActionCable::Channel#must_have_streams
|
189
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Channel/TestCase/Behavior.html#method-i-assert_has_stream
|
190
|
+
#
|
191
|
+
# :method: assert_has_stream
|
192
|
+
# :call-seq: assert_has_stream(stream)
|
193
|
+
|
194
|
+
##
|
195
|
+
# Asserts that the specified stream for a model has started.
|
196
|
+
#
|
197
|
+
# def test_assert_started_stream_for
|
198
|
+
# subscribe id: 42
|
199
|
+
# assert_has_stream_for User.find(42)
|
200
|
+
# end
|
201
|
+
#
|
202
|
+
# See also Minitest::Rails::Expectations::ActionCable::Channel#must_have_stream_for
|
203
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Channel/TestCase/Behavior.html#method-i-assert_has_stream_for
|
204
|
+
#
|
205
|
+
# :method: assert_has_stream_for
|
206
|
+
# :call-seq: assert_has_stream_for(object)
|
207
|
+
end
|
208
|
+
|
209
|
+
class ActionCable::Connection::TestCase
|
210
|
+
# Asserts that the connection is rejected (via +reject_unauthorized_connection+).
|
211
|
+
#
|
212
|
+
# class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
|
213
|
+
# def test_connects_with_proper_cookie
|
214
|
+
# # Simulate the connection request with a cookie.
|
215
|
+
# cookies["user_id"] = users(:john).id
|
216
|
+
#
|
217
|
+
# connect
|
218
|
+
#
|
219
|
+
# # Assert the connection identifier matches the fixture.
|
220
|
+
# assert_equal users(:john).id, connection.user.id
|
221
|
+
# end
|
222
|
+
#
|
223
|
+
# def test_rejects_connection_without_proper_cookie
|
224
|
+
# assert_reject_connection { connect }
|
225
|
+
# end
|
226
|
+
# end
|
227
|
+
#
|
228
|
+
# See also Minitest::Rails::Expectations::ActionCable#must_reject_connection
|
229
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Connection/Assertions.html#method-i-assert_reject_connection
|
230
|
+
#
|
231
|
+
# :method: assert_reject_connection
|
232
|
+
end
|
@@ -25,7 +25,7 @@ class ActionMailer::TestCase
|
|
25
25
|
# end
|
26
26
|
#
|
27
27
|
# See also Minitest::Rails::Expectations::ActionMailer#must_have_emails
|
28
|
-
# See https://api.rubyonrails.org/
|
28
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_emails
|
29
29
|
#
|
30
30
|
# :method: assert_emails
|
31
31
|
# :call-seq: assert_emails(number, &block)
|
@@ -51,7 +51,7 @@ class ActionMailer::TestCase
|
|
51
51
|
# assert_emails 0, &block
|
52
52
|
#
|
53
53
|
# See also Minitest::Rails::Expectations::ActionMailer#wont_have_emails
|
54
|
-
# See https://api.rubyonrails.org/
|
54
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_no_emails
|
55
55
|
#
|
56
56
|
# :method: refute_emails
|
57
57
|
# :call-seq: refute_emails(&block)
|
@@ -84,7 +84,7 @@ class ActionMailer::TestCase
|
|
84
84
|
# end
|
85
85
|
#
|
86
86
|
# See also Minitest::Rails::Expectations::ActionMailer#must_have_enqueued_emails
|
87
|
-
# See https://api.rubyonrails.org/
|
87
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_emails
|
88
88
|
#
|
89
89
|
# :method: assert_enqueued_emails
|
90
90
|
# :call-seq: assert_enqueued_emails(number, &block)
|
@@ -122,7 +122,7 @@ class ActionMailer::TestCase
|
|
122
122
|
# end
|
123
123
|
#
|
124
124
|
# See also Minitest::Rails::Expectations::ActionMailer#must_enqueue_email_with
|
125
|
-
# See https://api.rubyonrails.org/
|
125
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_email_with
|
126
126
|
#
|
127
127
|
# :method: assert_enqueued_email_with
|
128
128
|
# :call-seq: assert_enqueued_email_with(mailer, method, args: nil, queue: "mailers", &block)
|
@@ -145,7 +145,7 @@ class ActionMailer::TestCase
|
|
145
145
|
# end
|
146
146
|
#
|
147
147
|
# See also Minitest::Rails::Expectations::ActionMailer#wont_have_enqueued_emails
|
148
|
-
# See https://api.rubyonrails.org/
|
148
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_no_enqueued_emails
|
149
149
|
#
|
150
150
|
# :method: refute_enqueued_emails
|
151
151
|
# :call-seq: refute_enqueued_emails(&block)
|
@@ -8,7 +8,7 @@ class ActiveSupport::TestCase
|
|
8
8
|
# end
|
9
9
|
#
|
10
10
|
# See also Minitest::Rails::Expectations::ActiveSupport#must_change
|
11
|
-
# See https://api.rubyonrails.org/
|
11
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_changes
|
12
12
|
#
|
13
13
|
# :method: assert_changes
|
14
14
|
# :call-seq: assert_changes(expression, message = nil, from: UNTRACKED, to: UNTRACKED, &block)
|
@@ -22,7 +22,7 @@ class ActiveSupport::TestCase
|
|
22
22
|
# end
|
23
23
|
#
|
24
24
|
# See also Minitest::Rails::Expectations::ActiveSupport#wont_change
|
25
|
-
# See https://api.rubyonrails.org/
|
25
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_changes
|
26
26
|
#
|
27
27
|
# :args: expression, message = nil, &block
|
28
28
|
alias refute_changes assert_no_changes
|
@@ -36,7 +36,7 @@ class ActiveSupport::TestCase
|
|
36
36
|
# end
|
37
37
|
#
|
38
38
|
# See also Minitest::Rails::Expectations::ActiveSupport#must_change
|
39
|
-
# See https://api.rubyonrails.org/
|
39
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference
|
40
40
|
#
|
41
41
|
# :method: assert_difference
|
42
42
|
# :call-seq: assert_difference(expression, *args, &block)
|
@@ -50,7 +50,7 @@ class ActiveSupport::TestCase
|
|
50
50
|
# end
|
51
51
|
#
|
52
52
|
# See also Minitest::Rails::Expectations::ActiveSupport#wont_change
|
53
|
-
# See https://api.rubyonrails.org/
|
53
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_difference
|
54
54
|
#
|
55
55
|
# :args: expression, message = nil, &block
|
56
56
|
alias refute_difference assert_no_difference
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "minitest/rails/expectations/active_support"
|
2
2
|
require "minitest/rails/expectations/action_dispatch"
|
3
3
|
require "minitest/rails/expectations/active_job" if defined? ActiveJob
|
4
|
+
require "minitest/rails/expectations/action_cable" if defined? ActionCable
|
4
5
|
require "minitest/rails/expectations/action_mailer" if defined? ActionMailer
|
@@ -0,0 +1,197 @@
|
|
1
|
+
require "active_support/concern"
|
2
|
+
|
3
|
+
module Minitest
|
4
|
+
module Rails
|
5
|
+
module Expectations
|
6
|
+
module ActionCable
|
7
|
+
module TestHelper
|
8
|
+
##
|
9
|
+
# Asserts that the number of broadcasted messages to the stream matches the given number.
|
10
|
+
#
|
11
|
+
# def test_broadcasts
|
12
|
+
# must_have_broadcasts 'messages', 0
|
13
|
+
# ActionCable.server.broadcast 'messages', { text: 'hello' }
|
14
|
+
# must_have_broadcasts 'messages', 1
|
15
|
+
# ActionCable.server.broadcast 'messages', { text: 'world' }
|
16
|
+
# must_have_broadcasts 'messages', 2
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# If a block is passed, that block should cause the specified number of
|
20
|
+
# messages to be broadcasted.
|
21
|
+
#
|
22
|
+
# def test_broadcasts_again
|
23
|
+
# must_have_broadcasts('messages', 1) do
|
24
|
+
# ActionCable.server.broadcast 'messages', { text: 'hello' }
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# must_have_broadcasts('messages', 2) do
|
28
|
+
# ActionCable.server.broadcast 'messages', { text: 'hi' }
|
29
|
+
# ActionCable.server.broadcast 'messages', { text: 'how are you?' }
|
30
|
+
# end
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# See also ActionCable::TestHelper#assert_broadcasts
|
34
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_broadcasts
|
35
|
+
#
|
36
|
+
# :method: must_have_broadcasts
|
37
|
+
# :call-seq: must_have_broadcasts(stream, number)
|
38
|
+
|
39
|
+
##
|
40
|
+
# Asserts that no messages have been sent to the stream.
|
41
|
+
#
|
42
|
+
# def test_no_broadcasts
|
43
|
+
# wont_have_broadcasts 'messages'
|
44
|
+
# ActionCable.server.broadcast 'messages', { text: 'hi' }
|
45
|
+
# must_have_broadcasts 'messages', 1
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# If a block is passed, that block should not cause any message to be sent.
|
49
|
+
#
|
50
|
+
# def test_broadcasts_again
|
51
|
+
# wont_have_broadcasts 'messages' do
|
52
|
+
# # No job messages should be sent from this block
|
53
|
+
# end
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# Note: This assertion is simply a shortcut for:
|
57
|
+
#
|
58
|
+
# must_have_broadcasts 'messages', 0, &block
|
59
|
+
#
|
60
|
+
# See also ActionCable::TestHelper#wont_have_broadcasts
|
61
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_no_broadcasts
|
62
|
+
#
|
63
|
+
# :method: wont_have_broadcasts
|
64
|
+
# :call-seq: wont_have_broadcasts(stream, &block)
|
65
|
+
|
66
|
+
##
|
67
|
+
# Asserts that the specified message has been sent to the stream.
|
68
|
+
#
|
69
|
+
# def test_assert_transmitted_message
|
70
|
+
# ActionCable.server.broadcast 'messages', text: 'hello'
|
71
|
+
# must_broadcast_on('messages', text: 'hello')
|
72
|
+
# end
|
73
|
+
#
|
74
|
+
# If a block is passed, that block should cause a message with the specified data to be sent.
|
75
|
+
#
|
76
|
+
# def test_assert_broadcast_on_again
|
77
|
+
# must_broadcast_on('messages', text: 'hello') do
|
78
|
+
# ActionCable.server.broadcast 'messages', text: 'hello'
|
79
|
+
# end
|
80
|
+
# end
|
81
|
+
#
|
82
|
+
# See also ActionCable::TestHelper#assert_broadcast_on
|
83
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/TestHelper.html#method-i-assert_broadcast_on
|
84
|
+
#
|
85
|
+
# :method: must_broadcast_on
|
86
|
+
# :call-seq: must_broadcast_on(stream, data)
|
87
|
+
|
88
|
+
extend ::ActiveSupport::Concern
|
89
|
+
|
90
|
+
included do
|
91
|
+
alias_method :must_have_broadcasts, :assert_broadcasts
|
92
|
+
alias_method :wont_have_broadcasts, :assert_no_broadcasts
|
93
|
+
alias_method :must_broadcast_on, :assert_broadcast_on
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
module Channel
|
98
|
+
##
|
99
|
+
# Asserts that no streams have been started.
|
100
|
+
#
|
101
|
+
# def test_assert_no_started_stream
|
102
|
+
# subscribe
|
103
|
+
# wont_have_streams
|
104
|
+
# end
|
105
|
+
#
|
106
|
+
# See also ActionCable::Channel::TestCase#assert_no_streams
|
107
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Channel/TestCase/Behavior.html#method-i-assert_no_streams
|
108
|
+
#
|
109
|
+
# :method: wont_have_streams
|
110
|
+
|
111
|
+
##
|
112
|
+
# Asserts that the specified stream has been started.
|
113
|
+
#
|
114
|
+
# def test_assert_started_stream
|
115
|
+
# subscribe
|
116
|
+
# must_have_streams 'messages'
|
117
|
+
# end
|
118
|
+
#
|
119
|
+
# See also ActionCable::Channel::TestCase#assert_has_stream
|
120
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Channel/TestCase/Behavior.html#method-i-assert_has_stream
|
121
|
+
#
|
122
|
+
# :method: must_have_streams
|
123
|
+
# :call-seq: must_have_streams(stream)
|
124
|
+
|
125
|
+
##
|
126
|
+
# Asserts that the specified stream for a model has started.
|
127
|
+
#
|
128
|
+
# def test_assert_started_stream_for
|
129
|
+
# subscribe id: 42
|
130
|
+
# must_have_stream_for User.find(42)
|
131
|
+
# end
|
132
|
+
#
|
133
|
+
# See also ActionCable::Channel::TestCase#assert_has_stream_for
|
134
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Channel/TestCase/Behavior.html#method-i-assert_has_stream_for
|
135
|
+
#
|
136
|
+
# :method: must_have_stream_for
|
137
|
+
# :call-seq: must_have_stream_for(object)
|
138
|
+
|
139
|
+
extend ::ActiveSupport::Concern
|
140
|
+
|
141
|
+
included do
|
142
|
+
alias_method :wont_have_streams, :assert_no_streams
|
143
|
+
alias_method :must_have_streams, :assert_has_stream
|
144
|
+
alias_method :must_have_stream_for, :assert_has_stream_for
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
module Connection
|
149
|
+
##
|
150
|
+
# Asserts that the connection is rejected (via +reject_unauthorized_connection+).
|
151
|
+
#
|
152
|
+
# describe "Application Connections", :connection do
|
153
|
+
# it "connects with proper cookie" do
|
154
|
+
# # Simulate the connection request with a cookie.
|
155
|
+
# cookies["user_id"] = users(:john).id
|
156
|
+
#
|
157
|
+
# connect
|
158
|
+
#
|
159
|
+
# # Assert the connection identifier matches the fixture.
|
160
|
+
# value(connection.user.id).must_equal users(:john).id
|
161
|
+
# end
|
162
|
+
#
|
163
|
+
# it "rejects connection without proper cookie" do
|
164
|
+
# must_reject_connection { connect }
|
165
|
+
# end
|
166
|
+
# end
|
167
|
+
#
|
168
|
+
# See also ActionCable::Connection::TestCase#assert_reject_connection
|
169
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionCable/Connection/Assertions.html#method-i-assert_reject_connection
|
170
|
+
#
|
171
|
+
# :method: must_reject_connection
|
172
|
+
|
173
|
+
extend ::ActiveSupport::Concern
|
174
|
+
|
175
|
+
included do
|
176
|
+
alias_method :must_reject_connection, :assert_reject_connection
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
unless ENV["MT_NO_EXPECTATIONS"]
|
185
|
+
class ActionCable::TestCase # :nodoc:
|
186
|
+
include Minitest::Rails::Expectations::ActionCable::TestHelper
|
187
|
+
end
|
188
|
+
|
189
|
+
class ActionCable::Channel::TestCase # :nodoc:
|
190
|
+
include Minitest::Rails::Expectations::ActionCable::TestHelper
|
191
|
+
include Minitest::Rails::Expectations::ActionCable::Channel
|
192
|
+
end
|
193
|
+
|
194
|
+
class ActionCable::Connection::TestCase # :nodoc:
|
195
|
+
include Minitest::Rails::Expectations::ActionCable::Connection
|
196
|
+
end
|
197
|
+
end
|
@@ -30,7 +30,7 @@ module Minitest
|
|
30
30
|
# end
|
31
31
|
#
|
32
32
|
# See also ActionMailer::TestClass#assert_emails
|
33
|
-
# See https://api.rubyonrails.org/
|
33
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_emails
|
34
34
|
#
|
35
35
|
# :method: must_have_emails
|
36
36
|
# :call-seq: must_have_emails(number, &block)
|
@@ -56,7 +56,7 @@ module Minitest
|
|
56
56
|
# must_have_emails 0, &block
|
57
57
|
#
|
58
58
|
# See also ActionMailer::TestClass#wont_have_emails
|
59
|
-
# See https://api.rubyonrails.org/
|
59
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_no_emails
|
60
60
|
#
|
61
61
|
# :method: wont_have_emails
|
62
62
|
# :call-seq: wont_have_emails(&block)
|
@@ -88,7 +88,7 @@ module Minitest
|
|
88
88
|
# end
|
89
89
|
#
|
90
90
|
# See also ActionMailer::TestClass#assert_enqueued_emails
|
91
|
-
# See https://api.rubyonrails.org/
|
91
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_emails
|
92
92
|
#
|
93
93
|
# :method: must_have_enqueued_emails
|
94
94
|
# :call-seq: must_have_enqueued_emails(number, &block)
|
@@ -126,7 +126,7 @@ module Minitest
|
|
126
126
|
# end
|
127
127
|
#
|
128
128
|
# See also ActionMailer::TestClass#assert_enqueued_email_with
|
129
|
-
# See https://api.rubyonrails.org/
|
129
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_email_with
|
130
130
|
#
|
131
131
|
# :method: must_enqueue_email_with
|
132
132
|
# :call-seq: must_enqueue_email_with(mailer, method, args: nil, queue: "mailers", &block)
|
@@ -149,7 +149,7 @@ module Minitest
|
|
149
149
|
# end
|
150
150
|
#
|
151
151
|
# See also ActionMailer::TestClass#assert_no_enqueued_emails
|
152
|
-
# See https://api.rubyonrails.org/
|
152
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActionMailer/TestHelper.html#method-i-assert_no_enqueued_emails
|
153
153
|
#
|
154
154
|
# :method: wont_have_enqueued_emails
|
155
155
|
# :call-seq: wont_have_enqueued_emails(&block)
|
@@ -12,7 +12,7 @@ module Minitest
|
|
12
12
|
# end }.must_change "User.count", from: 5, to: 8
|
13
13
|
#
|
14
14
|
# See also ActiveSupport::TestCase#assert_difference
|
15
|
-
# See https://api.rubyonrails.org/
|
15
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_changes
|
16
16
|
#
|
17
17
|
# :method: must_change
|
18
18
|
# :args: expression, from: UNTRACKED, to: UNTRACKED
|
@@ -27,7 +27,7 @@ module Minitest
|
|
27
27
|
# end
|
28
28
|
#
|
29
29
|
# See also ActiveSupport::TestCase#assert_difference
|
30
|
-
# See https://api.rubyonrails.org/
|
30
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_changes
|
31
31
|
#
|
32
32
|
# :method: wont_change
|
33
33
|
# :args: expression
|
@@ -43,7 +43,7 @@ module Minitest
|
|
43
43
|
# end }.must_differ "User.count", 3
|
44
44
|
#
|
45
45
|
# See also ActiveSupport::TestCase#assert_difference
|
46
|
-
# See https://api.rubyonrails.org/
|
46
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference
|
47
47
|
#
|
48
48
|
# :method: must_differ
|
49
49
|
# :args: expression, *args
|
@@ -56,7 +56,7 @@ module Minitest
|
|
56
56
|
# value { User.new }.wont_differ "User.count"
|
57
57
|
#
|
58
58
|
# See also ActiveSupport::TestCase#refute_difference
|
59
|
-
# See https://api.rubyonrails.org/
|
59
|
+
# See https://api.rubyonrails.org/v6.0/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_difference
|
60
60
|
#
|
61
61
|
# :method: wont_differ
|
62
62
|
# :args: expression
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "rails"
|
3
|
+
|
4
|
+
# :stopdoc:
|
5
|
+
|
6
|
+
##
|
7
|
+
# These changes are here to support the spec DSL when using Rails parallelize.
|
8
|
+
# The issue is the spec DSL creates Class objects that are not assigned to
|
9
|
+
# a Ruby constant. When those Class objects are passed through Drb they are
|
10
|
+
# wrapped in a DrbObject and cannot be run. The solution is to assign each Class
|
11
|
+
# object to a constant. Hopefully the constant name is consistent enough that
|
12
|
+
# the constant can be passed across processes (or even machines).
|
13
|
+
|
14
|
+
module Minitest
|
15
|
+
module Rails
|
16
|
+
##
|
17
|
+
# This module is a placeholder for all the Test classes created using the
|
18
|
+
# spec DSL. Normally all classes are created but not assigned to a constant.
|
19
|
+
# This module is where constants will be created for these classes.
|
20
|
+
module SpecTests #:nodoc:
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Kernel #:nodoc:
|
26
|
+
alias describe_before_minitest_spec_constant_fix describe
|
27
|
+
private :describe_before_minitest_spec_constant_fix
|
28
|
+
def describe *args, &block
|
29
|
+
cls = describe_before_minitest_spec_constant_fix(*args, &block)
|
30
|
+
cls_const = "Test__#{cls.name.to_s.split(/\W/).reject(&:empty?).join('_'.freeze)}"
|
31
|
+
if block.source_location
|
32
|
+
source_path, line_num = block.source_location
|
33
|
+
source_path = Pathname.new(source_path).relative_path_from(Rails.root).to_s
|
34
|
+
source_path = source_path.split(/\W/).reject(&:empty?).join("_".freeze)
|
35
|
+
cls_const += "__#{source_path}__#{line_num}"
|
36
|
+
end
|
37
|
+
cls_const += "_1" while Minitest::Rails::SpecTests.const_defined? cls_const
|
38
|
+
Minitest::Rails::SpecTests.const_set cls_const, cls
|
39
|
+
cls
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 6.0.0.beta1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 6.0.0.beta1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest-autotest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/generators/minitest/helper/helper_generator.rb
|
130
130
|
- lib/generators/minitest/install/install_generator.rb
|
131
131
|
- lib/generators/minitest/install/templates/test/application_system_test_case.rb.tt
|
132
|
+
- lib/generators/minitest/install/templates/test/channels/application_cable/connection_test.rb.tt
|
132
133
|
- lib/generators/minitest/install/templates/test/test_helper.rb.tt
|
133
134
|
- lib/generators/minitest/integration/integration_generator.rb
|
134
135
|
- lib/generators/minitest/integration/templates/integration_spec.rb.tt
|
@@ -161,6 +162,7 @@ files:
|
|
161
162
|
- lib/minitest-rails.rb
|
162
163
|
- lib/minitest/rails.rb
|
163
164
|
- lib/minitest/rails/assertions.rb
|
165
|
+
- lib/minitest/rails/assertions/action_cable.rb
|
164
166
|
- lib/minitest/rails/assertions/action_dispatch.rb
|
165
167
|
- lib/minitest/rails/assertions/action_mailer.rb
|
166
168
|
- lib/minitest/rails/assertions/action_view.rb
|
@@ -168,10 +170,12 @@ files:
|
|
168
170
|
- lib/minitest/rails/assertions/active_support.rb
|
169
171
|
- lib/minitest/rails/capybara.rb
|
170
172
|
- lib/minitest/rails/expectations.rb
|
173
|
+
- lib/minitest/rails/expectations/action_cable.rb
|
171
174
|
- lib/minitest/rails/expectations/action_dispatch.rb
|
172
175
|
- lib/minitest/rails/expectations/action_mailer.rb
|
173
176
|
- lib/minitest/rails/expectations/active_job.rb
|
174
177
|
- lib/minitest/rails/expectations/active_support.rb
|
178
|
+
- lib/minitest/rails/parallelize.rb
|
175
179
|
- lib/minitest/rails/railtie.rb
|
176
180
|
- lib/minitest/rails/version.rb
|
177
181
|
homepage: http://blowmage.com/minitest-rails
|
@@ -186,12 +190,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
190
|
requirements:
|
187
191
|
- - ">="
|
188
192
|
- !ruby/object:Gem::Version
|
189
|
-
version: 2.
|
193
|
+
version: 2.5.0
|
190
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
195
|
requirements:
|
192
|
-
- - "
|
196
|
+
- - ">"
|
193
197
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
198
|
+
version: 1.3.1
|
195
199
|
requirements: []
|
196
200
|
rubygems_version: 3.0.3
|
197
201
|
signing_key:
|