Skip to content
  • Vladimir Dementyev's avatar
    dc80459a
    Move `channel_name` to Channel.broadcasting_for · dc80459a
    Vladimir Dementyev authored
    That would allow us to test broadcasting made with channel, e.g.:
    
    ```ruby
    class ChatRelayJob < ApplicationJob
      def perform_later(room, msg)
        ChatChannel.broadcast_to room, message: msg
      end
    end
    ```
    
    To test this functionality we need to know the underlying stream name
    (to use `assert_broadcasts`), which relies on `channel_name`.
    
    We had to use the following code:
    
    ```ruby
    assert_broadcasts(ChatChannel.broadcasting_for([ChatChannel.channel_name, room]), 1) do
      ChatRelayJob.perform_now
    end
    ```
    
    The problem with this approach is that we use _internal_ API (we shouldn't care about `channel_name` prefix
    in our code).
    
    With this commit we could re-write the test as following:
    
    ```ruby
     assert_broadcasts(ChatChannel.broadcasting_for(room), 1) do
       ChatRelayJob.perform_now
     end
    ```
    dc80459a
    Move `channel_name` to Channel.broadcasting_for
    Vladimir Dementyev authored
    That would allow us to test broadcasting made with channel, e.g.:
    
    ```ruby
    class ChatRelayJob < ApplicationJob
      def perform_later(room, msg)
        ChatChannel.broadcast_to room, message: msg
      end
    end
    ```
    
    To test this functionality we need to know the underlying stream name
    (to use `assert_broadcasts`), which relies on `channel_name`.
    
    We had to use the following code:
    
    ```ruby
    assert_broadcasts(ChatChannel.broadcasting_for([ChatChannel.channel_name, room]), 1) do
      ChatRelayJob.perform_now
    end
    ```
    
    The problem with this approach is that we use _internal_ API (we shouldn't care about `channel_name` prefix
    in our code).
    
    With this commit we could re-write the test as following:
    
    ```ruby
     assert_broadcasts(ChatChannel.broadcasting_for(room), 1) do
       ChatRelayJob.perform_now
     end
    ```
Loading