Delegate StubConnection#pubsub
and StubConnection#config
to ActionCable.server
#48706
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation / Background
Previously,
ActionCable::Channel::ConnectionStub
would throw aNoMethodError
when the channel under test callsstop_stream_from
, as shown in the test case below:This happens because
stop_stream_from
callspubsub
when unsubscribing from a channel, which is missing from theConnectionStub
implementation.Detail
This PR fixes this issue by assigning the
ActionCable.server
singleton to a@server
instance variable inActionCable::Channel::ConnectionStub
.This lets us delegate the
config
andpubsub
method calls to it, hence fixing theNoMethodError
issue.I updated
config
to be delegated to@server
as well sinceconfig
defaults toActionCable::Server::Configuration.new
.We do something similar in
ActionCable::TestHelper#pubsub_adapter
as well:rails/actioncable/lib/action_cable/test_helper.rb
Lines 133 to 135 in 13cff7e
Additional information
I'm not sure if I should add a changelog entry for this. But, I added it anyway since I feel adding
@server = ActionCable.server
qualifies as a behavior change.Checklist
Before submitting the PR make sure the following are checked:
[Fix #issue-number]