action-cable-testing 0.0.5 → 0.0.6
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 +4 -4
- data/.yardopts +1 -0
- data/README.md +8 -3
- data/lib/action_cable/channel/test_case.rb +9 -2
- data/lib/action_cable/testing.rb +2 -0
- data/lib/action_cable/testing/rspec.rb +22 -0
- data/lib/action_cable/testing/version.rb +1 -1
- data/lib/rspec/rails/example/channel_example_group.rb +34 -0
- metadata +33 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5796425a4e5ab73343b517a89d64d5aa2be0fd6
|
4
|
+
data.tar.gz: 58e1d065fbf5038ab793ed22a7d204d1c3c045ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5b188a2a39bc37f77a8456ba9e308098210899fbf33686e847d4ddd1b6e7337004c7a1c8e79c8df94e34e5e19fc2f9b0f83ffe03294529320ce612f027c0290
|
7
|
+
data.tar.gz: 0dab5c1a7ac3ac23a9bbe61a3701e0a559bd5347e2a4722933f964b66b5935bdcefdf98058262c782d27d197dcfb8e7c605983983ba80f621448f776e1b9bda7
|
data/.yardopts
CHANGED
data/README.md
CHANGED
@@ -21,8 +21,6 @@ And then execute:
|
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
24
|
-
[Documentation](http://www.rubydoc.info/gems/action-cable-testing)
|
25
|
-
|
26
24
|
### Test Adapter and Broadcasting
|
27
25
|
|
28
26
|
We add `ActionCable::SubscriptionAdapter::Test` (very similar Active Job and Action Mailer tests adapters) and `ActionCable::TestCase` with a couple of matchers to track broadcasting messages in our tests:
|
@@ -102,7 +100,7 @@ def test_perform_speak
|
|
102
100
|
perform :speak, message: "Hello, Rails!"
|
103
101
|
|
104
102
|
# `transmissions` stores messages sent directly to the channel (i.e. with `transmit` method)
|
105
|
-
assert_equal "Hello, Rails!", transmissions.last["
|
103
|
+
assert_equal "Hello, Rails!", transmissions.last["text"]
|
106
104
|
end
|
107
105
|
```
|
108
106
|
|
@@ -124,6 +122,10 @@ class ChatChannelTest < ActionCable::Channel::TestCase
|
|
124
122
|
end
|
125
123
|
```
|
126
124
|
|
125
|
+
### RSpec Usage
|
126
|
+
|
127
|
+
For more RSpec documentation see https://relishapp.com/palkan/action-cable-testing/docs.
|
128
|
+
|
127
129
|
### Generators
|
128
130
|
|
129
131
|
This gem also provides Rails generators:
|
@@ -131,6 +133,9 @@ This gem also provides Rails generators:
|
|
131
133
|
```sh
|
132
134
|
# Generate a channel test case for ChatChannel
|
133
135
|
rails generate test_unit:channel chat
|
136
|
+
|
137
|
+
# or for RSpec
|
138
|
+
rails generate rspec:channel chat
|
134
139
|
```
|
135
140
|
|
136
141
|
## Development
|
@@ -138,11 +138,12 @@ module ActionCable
|
|
138
138
|
include ActiveSupport::Testing::ConstantLookup
|
139
139
|
include ActionCable::TestHelper
|
140
140
|
|
141
|
+
CHANNEL_IDENTIFIER = "test_stub"
|
142
|
+
|
141
143
|
included do
|
142
144
|
class_attribute :_channel_class
|
143
145
|
|
144
146
|
attr_reader :subscription
|
145
|
-
delegate :transmissions, to: :connection
|
146
147
|
delegate :streams, to: :subscription
|
147
148
|
|
148
149
|
ActiveSupport.run_load_hooks(:action_cable_channel_test_case, self)
|
@@ -190,7 +191,7 @@ module ActionCable
|
|
190
191
|
|
191
192
|
# Subsribe to the channel under test. Optionally pass subscription parameters as a Hash.
|
192
193
|
def subscribe(params = {})
|
193
|
-
@subscription = self.class.channel_class.new(connection,
|
194
|
+
@subscription = self.class.channel_class.new(connection, CHANNEL_IDENTIFIER, params.with_indifferent_access)
|
194
195
|
@subscription.singleton_class.include(ChannelStub)
|
195
196
|
@subscription.subscribe_to_channel
|
196
197
|
@subscription
|
@@ -208,6 +209,12 @@ module ActionCable
|
|
208
209
|
@connection ||= stub_connection
|
209
210
|
end
|
210
211
|
|
212
|
+
# Returns messages transmitted into channel
|
213
|
+
def transmissions
|
214
|
+
# Return only directly sent message (via #transmit)
|
215
|
+
connection.transmissions.map { |data| data["message"] }.compact
|
216
|
+
end
|
217
|
+
|
211
218
|
private
|
212
219
|
def check_subscribed!
|
213
220
|
raise "Must be subscribed!" if subscription.nil? || subscription.rejected?
|
data/lib/action_cable/testing.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rspec/rails/example/channel_example_group"
|
4
|
+
|
5
|
+
module RSpec
|
6
|
+
module Rails
|
7
|
+
module FeatureCheck
|
8
|
+
module_function
|
9
|
+
def has_action_cable?
|
10
|
+
defined?(::ActionCable)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
self::DIRECTORY_MAPPINGS[:channel] = %w[spec channels]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
RSpec.configure do |config|
|
19
|
+
if defined?(ActionCable)
|
20
|
+
config.include RSpec::Rails::ChannelExampleGroup, type: :channel
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module Rails
|
5
|
+
# @api public
|
6
|
+
# Container module for channel spec functionality. It is only available if
|
7
|
+
# ActionCable has been loaded before it.
|
8
|
+
module ChannelExampleGroup
|
9
|
+
# This blank module is only necessary for YARD processing. It doesn't
|
10
|
+
# handle the conditional `defined?` check below very well.
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
if defined?(ActionCable)
|
16
|
+
module RSpec
|
17
|
+
module Rails
|
18
|
+
# Container module for channel spec functionality.
|
19
|
+
module ChannelExampleGroup
|
20
|
+
extend ActiveSupport::Concern
|
21
|
+
include RSpec::Rails::RailsExampleGroup
|
22
|
+
include ActionCable::Channel::TestCase::Behavior
|
23
|
+
|
24
|
+
# Class-level DSL for channel specs.
|
25
|
+
module ClassMethods
|
26
|
+
# @private
|
27
|
+
def channel_class
|
28
|
+
described_class
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action-cable-testing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actioncable
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cucumber
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.3.5
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.5
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +67,7 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '10.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
70
|
+
name: rspec-rails
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '3.5'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: aruba
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.5.4
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.5.4
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: minitest
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,9 +153,11 @@ files:
|
|
125
153
|
- lib/action_cable/test_case.rb
|
126
154
|
- lib/action_cable/test_helper.rb
|
127
155
|
- lib/action_cable/testing.rb
|
156
|
+
- lib/action_cable/testing/rspec.rb
|
128
157
|
- lib/action_cable/testing/version.rb
|
129
158
|
- lib/generators/test_unit/channel/channel_generator.rb
|
130
159
|
- lib/generators/test_unit/channel/templates/unit_test.rb.erb
|
160
|
+
- lib/rspec/rails/example/channel_example_group.rb
|
131
161
|
homepage: http://github.com/palkan/action-cable-testing
|
132
162
|
licenses:
|
133
163
|
- MIT
|