提交 1af531dc 编写于 作者: P Pratik Naik

Add some more tests

上级 53c82f6d
......@@ -2,7 +2,7 @@ module ActionCable
module Channel
module PeriodicTimers
extend ActiveSupport::Concern
included do
class_attribute :periodic_timers, instance_reader: false
self.periodic_timers = []
......
require 'test_helper'
require 'stubs/test_connection'
class ChannelTest < ActiveSupport::TestCase
class ActionCable::Channel::BaseTest < ActiveSupport::TestCase
Room = Struct.new(:id)
User = Struct.new(:name)
class TestConnection
attr_reader :identifiers, :logger, :current_user, :transmissions
def initialize(user)
@identifiers = [ :current_user ]
@current_user = user
@logger = Logger.new(StringIO.new)
@transmissions = []
end
def transmit(data)
@transmissions << data
end
def last_transmission
@transmissions.last
end
end
class ChatChannel < ActionCable::Channel::Base
attr_reader :room, :last_action
......
require 'test_helper'
require 'stubs/test_connection'
class ActionCable::Channel::PeriodicTimersTest < ActiveSupport::TestCase
Room = Struct.new(:id)
class ChatChannel < ActionCable::Channel::Base
periodically -> { ping }, every: 5
periodically :send_updates, every: 1
private
def ping
end
end
setup do
@connection = TestConnection.new
end
test "periodic timers definition" do
timers = ChatChannel.periodic_timers
assert_equal 2, timers.size
first_timer = timers[0]
assert_kind_of Proc, first_timer[0]
assert_equal 5, first_timer[1][:every]
second_timer = timers[1]
assert_equal :send_updates, second_timer[0]
assert_equal 1, second_timer[1][:every]
end
test "timer start and stop" do
EventMachine::PeriodicTimer.expects(:new).times(2).returns(true)
channel = ChatChannel.new @connection, "{id: 1}", { id: 1 }
channel.expects(:stop_periodic_timers).once
channel.unsubscribe_from_channel
end
end
require 'test_helper'
require 'stubs/test_connection'
class ActionCable::Channel::StreamTest < ActiveSupport::TestCase
Room = Struct.new(:id)
class ChatChannel < ActionCable::Channel::Base
def subscribed
@room = Room.new params[:id]
stream_from "test_room_#{@room.id}"
end
end
setup do
@connection = TestConnection.new
end
test "streaming start and stop" do
@connection.expects(:pubsub).returns mock().tap { |m| m.expects(:subscribe) }
channel = ChatChannel.new @connection, "{id: 1}", { id: 1 }
@connection.expects(:pubsub).returns mock().tap { |m| m.expects(:unsubscribe_proc) }
channel.unsubscribe_from_channel
end
end
require 'test_helper'
require 'stubs/test_server'
class ActionCable::Connection::BaseTest < ActiveSupport::TestCase
setup do
@server = TestServer.new
env = Rack::MockRequest.env_for "/test", 'HTTP_CONNECTION' => 'upgrade', 'HTTP_UPGRADE' => 'websocket'
@connection = ActionCable::Connection::Base.new(@server, env)
end
test "making a connection with invalid headers" do
connection = ActionCable::Connection::Base.new(@server, Rack::MockRequest.env_for("/test"))
response = connection.process
assert_equal 404, response[0]
end
end
require 'stubs/user'
class TestConnection
attr_reader :identifiers, :logger, :current_user, :transmissions
def initialize(user = User.new("lifo"))
@identifiers = [ :current_user ]
@current_user = user
@logger = ActiveSupport::TaggedLogging.new ActiveSupport::Logger.new(StringIO.new)
@transmissions = []
end
def transmit(data)
@transmissions << data
end
def last_transmission
@transmissions.last
end
# Disable async in tests
def send_async(method, *arguments)
send method, *arguments
end
end
require 'ostruct'
class TestServer
attr_reader :logger, :config
def initialize
@logger = ActiveSupport::TaggedLogging.new ActiveSupport::Logger.new(StringIO.new)
@config = OpenStruct.new(log_tags: [])
end
end
class User
attr_reader :name
def initialize(name)
@name = name
end
end
......@@ -4,12 +4,11 @@
gem 'minitest'
require "minitest/autorun"
require 'mocha/mini_test'
Bundler.setup
Bundler.require :default, :test
require 'puma'
require 'mocha/mini_test'
require 'action_cable'
ActiveSupport.test_order = :sorted
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册