minitest-rails 5.2.0 → 6.0.0.rc1

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.
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: