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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8db0986c7b179767d04db55300ab14102d3ff7a40de2c540bede74955eab04a0
4
- data.tar.gz: 294ad7d63a3e6df1f7c47a8ed393aed664db9e201e20fc21ffe594abb87ae180
3
+ metadata.gz: 1a17c39422e4e1c7ccad8d53a784d0bda53d371331b3a351fbd4b5415d336f9b
4
+ data.tar.gz: 40367011c49265b5e634369a8fed095c40a2c4c93ad4cd38ca1941a489107837
5
5
  SHA512:
6
- metadata.gz: 2d225edae984a6a517cd26ab83fdc9874974c398250372fccf473630aced05b9f9e4615b7c61a15e39f0713a75e93fae854cf79bc87f0acbbdf36e2985cc2fc4
7
- data.tar.gz: d8f12f12f38d5c82bcc749a2ca036625b75f65d443f79e602d32fcf37a4e416590570d2d0376d23c94a23ee024a2c7f081a5616d67be7311035c478eb5219f0c
6
+ metadata.gz: d049c84f5086d1b210e7881f4f51d165f53fc1494377bca532111a1ec239f443fccd930b1abdb8736ae20f2ccb8e5e825a35b156588c4e7d7b646385106872c8
7
+ data.tar.gz: '09a8905547e4a1325c4093fed20e68a3019ada1b8e52fa2dff6472d8facb087a8c098f876988d6e632fa0d58e029d50f592175a022a015a3acbdc8e387262528'
@@ -1,5 +1,5 @@
1
1
  # Changes
2
2
 
3
- ### 5.2.0 / upcoming...
3
+ ### 6.0.0-rc1 / upcoming...
4
4
 
5
5
  * ...
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # minitest-rails
2
2
 
3
- Minitest integration for Rails 5.2
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
- ### Update Gemfile
22
+ ### Choosing a version
23
23
 
24
- This version is for Rails 5.2 applications. Update your application to use the
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", "~> 5.2.0"
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
@@ -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
@@ -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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_emails
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_no_emails
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_emails
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_email_with
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_no_enqueued_emails
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_changes
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_changes
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_difference
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,3 +1,4 @@
1
+ require "minitest/rails"
1
2
  require "capybara/minitest"
2
3
  require "capybara/minitest/spec"
3
4
 
@@ -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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_emails
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_no_emails
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_emails
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_enqueued_email_with
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/v5.2/classes/ActionMailer/TestHelper.html#method-i-assert_no_enqueued_emails
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_changes
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_changes
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference
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/v5.2/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_difference
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
@@ -1,5 +1,5 @@
1
1
  module Minitest
2
2
  module Rails
3
- VERSION = "5.2.0".freeze
3
+ VERSION = "6.0.0.rc1".freeze
4
4
  end
5
5
  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: 5.2.0
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: 5.2.0
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: 5.2.0
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.3.0
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: '0'
198
+ version: 1.3.1
195
199
  requirements: []
196
200
  rubygems_version: 3.0.3
197
201
  signing_key: