mirror of https://github.com/rails/rails
Use minitest/mock instead of mocha
This commit is contained in:
parent
565ce0eaba
commit
84854d9d05
|
@ -1,6 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
require "minitest/mock"
|
||||
require "stubs/test_connection"
|
||||
require "stubs/room"
|
||||
|
||||
|
@ -226,12 +227,13 @@ class ActionCable::Channel::BaseTest < ActiveSupport::TestCase
|
|||
events << ActiveSupport::Notifications::Event.new(*args)
|
||||
end
|
||||
|
||||
@channel.stubs(:subscription_confirmation_sent?).returns(false)
|
||||
@channel.send(:transmit_subscription_confirmation)
|
||||
@channel.stub(:subscription_confirmation_sent?, false) do
|
||||
@channel.send(:transmit_subscription_confirmation)
|
||||
|
||||
assert_equal 1, events.length
|
||||
assert_equal "transmit_subscription_confirmation.action_cable", events[0].name
|
||||
assert_equal "ActionCable::Channel::BaseTest::ChatChannel", events[0].payload[:channel_class]
|
||||
assert_equal 1, events.length
|
||||
assert_equal "transmit_subscription_confirmation.action_cable", events[0].name
|
||||
assert_equal "ActionCable::Channel::BaseTest::ChatChannel", events[0].payload[:channel_class]
|
||||
end
|
||||
ensure
|
||||
ActiveSupport::Notifications.unsubscribe "transmit_subscription_confirmation.action_cable"
|
||||
end
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
require "active_support/testing/method_call_assertions"
|
||||
require "stubs/test_connection"
|
||||
require "stubs/room"
|
||||
|
||||
class ActionCable::Channel::BroadcastingTest < ActiveSupport::TestCase
|
||||
include ActiveSupport::Testing::MethodCallAssertions
|
||||
|
||||
class ChatChannel < ActionCable::Channel::Base
|
||||
end
|
||||
|
||||
|
@ -13,8 +16,16 @@ class ActionCable::Channel::BroadcastingTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
test "broadcasts_to" do
|
||||
ActionCable.stubs(:server).returns mock().tap { |m| m.expects(:broadcast).with("action_cable:channel:broadcasting_test:chat:Room#1-Campfire", "Hello World") }
|
||||
ChatChannel.broadcast_to(Room.new(1), "Hello World")
|
||||
assert_called_with(
|
||||
ActionCable.server,
|
||||
:broadcast,
|
||||
[
|
||||
"action_cable:channel:broadcasting_test:chat:Room#1-Campfire",
|
||||
"Hello World"
|
||||
]
|
||||
) do
|
||||
ChatChannel.broadcast_to(Room.new(1), "Hello World")
|
||||
end
|
||||
end
|
||||
|
||||
test "broadcasting_for with an object" do
|
||||
|
|
|
@ -4,8 +4,11 @@ require "test_helper"
|
|||
require "stubs/test_connection"
|
||||
require "stubs/room"
|
||||
require "active_support/time"
|
||||
require "active_support/testing/method_call_assertions"
|
||||
|
||||
class ActionCable::Channel::PeriodicTimersTest < ActiveSupport::TestCase
|
||||
include ActiveSupport::Testing::MethodCallAssertions
|
||||
|
||||
class ChatChannel < ActionCable::Channel::Base
|
||||
# Method name arg
|
||||
periodically :send_updates, every: 1
|
||||
|
@ -64,11 +67,22 @@ class ActionCable::Channel::PeriodicTimersTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
test "timer start and stop" do
|
||||
@connection.server.event_loop.expects(:timer).times(3).returns(stub(shutdown: nil))
|
||||
channel = ChatChannel.new @connection, "{id: 1}", id: 1
|
||||
mock = Minitest::Mock.new
|
||||
3.times { mock.expect(:shutdown, nil) }
|
||||
|
||||
channel.subscribe_to_channel
|
||||
channel.unsubscribe_from_channel
|
||||
assert_equal [], channel.send(:active_periodic_timers)
|
||||
assert_called(
|
||||
@connection.server.event_loop,
|
||||
:timer,
|
||||
times: 3,
|
||||
returns: mock
|
||||
) do
|
||||
channel = ChatChannel.new @connection, "{id: 1}", id: 1
|
||||
|
||||
channel.subscribe_to_channel
|
||||
channel.unsubscribe_from_channel
|
||||
assert_equal [], channel.send(:active_periodic_timers)
|
||||
end
|
||||
|
||||
assert mock.verify
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
require "minitest/mock"
|
||||
require "stubs/test_connection"
|
||||
require "stubs/room"
|
||||
|
||||
|
@ -20,24 +21,36 @@ class ActionCable::Channel::RejectionTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
test "subscription rejection" do
|
||||
@connection.expects(:subscriptions).returns mock().tap { |m| m.expects(:remove_subscription).with instance_of(SecretChannel) }
|
||||
@channel = SecretChannel.new @connection, "{id: 1}", id: 1
|
||||
@channel.subscribe_to_channel
|
||||
subscriptions = Minitest::Mock.new
|
||||
subscriptions.expect(:remove_subscription, SecretChannel, [SecretChannel])
|
||||
|
||||
expected = { "identifier" => "{id: 1}", "type" => "reject_subscription" }
|
||||
assert_equal expected, @connection.last_transmission
|
||||
@connection.stub(:subscriptions, subscriptions) do
|
||||
@channel = SecretChannel.new @connection, "{id: 1}", id: 1
|
||||
@channel.subscribe_to_channel
|
||||
|
||||
expected = { "identifier" => "{id: 1}", "type" => "reject_subscription" }
|
||||
assert_equal expected, @connection.last_transmission
|
||||
end
|
||||
|
||||
assert subscriptions.verify
|
||||
end
|
||||
|
||||
test "does not execute action if subscription is rejected" do
|
||||
@connection.expects(:subscriptions).returns mock().tap { |m| m.expects(:remove_subscription).with instance_of(SecretChannel) }
|
||||
@channel = SecretChannel.new @connection, "{id: 1}", id: 1
|
||||
@channel.subscribe_to_channel
|
||||
subscriptions = Minitest::Mock.new
|
||||
subscriptions.expect(:remove_subscription, SecretChannel, [SecretChannel])
|
||||
|
||||
expected = { "identifier" => "{id: 1}", "type" => "reject_subscription" }
|
||||
assert_equal expected, @connection.last_transmission
|
||||
assert_equal 1, @connection.transmissions.size
|
||||
@connection.stub(:subscriptions, subscriptions) do
|
||||
@channel = SecretChannel.new @connection, "{id: 1}", id: 1
|
||||
@channel.subscribe_to_channel
|
||||
|
||||
@channel.perform_action("action" => :secret_action)
|
||||
assert_equal 1, @connection.transmissions.size
|
||||
expected = { "identifier" => "{id: 1}", "type" => "reject_subscription" }
|
||||
assert_equal expected, @connection.last_transmission
|
||||
assert_equal 1, @connection.transmissions.size
|
||||
|
||||
@channel.perform_action("action" => :secret_action)
|
||||
assert_equal 1, @connection.transmissions.size
|
||||
end
|
||||
|
||||
assert subscriptions.verify
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
require "test_helper"
|
||||
require "active_support/testing/method_call_assertions"
|
||||
require "minitest/mock"
|
||||
require "stubs/test_connection"
|
||||
require "stubs/room"
|
||||
|
||||
|
@ -54,29 +55,41 @@ module ActionCable::StreamTests
|
|||
test "streaming start and stop" do
|
||||
run_in_eventmachine do
|
||||
connection = TestConnection.new
|
||||
connection.pubsub.expects(:subscribe).with("test_room_1", kind_of(Proc), kind_of(Proc))
|
||||
channel = ChatChannel.new connection, "{id: 1}", id: 1
|
||||
channel.subscribe_to_channel
|
||||
pubsub = Minitest::Mock.new connection.pubsub
|
||||
|
||||
wait_for_async
|
||||
pubsub.expect(:subscribe, nil, ["test_room_1", Proc, Proc])
|
||||
pubsub.expect(:unsubscribe, nil, ["test_room_1", Proc])
|
||||
|
||||
connection.pubsub.expects(:unsubscribe)
|
||||
channel.unsubscribe_from_channel
|
||||
connection.stub(:pubsub, pubsub) do
|
||||
channel = ChatChannel.new connection, "{id: 1}", id: 1
|
||||
channel.subscribe_to_channel
|
||||
|
||||
wait_for_async
|
||||
channel.unsubscribe_from_channel
|
||||
end
|
||||
|
||||
assert pubsub.verify
|
||||
end
|
||||
end
|
||||
|
||||
test "stream from non-string channel" do
|
||||
run_in_eventmachine do
|
||||
connection = TestConnection.new
|
||||
connection.pubsub.expects(:subscribe).with("channel", kind_of(Proc), kind_of(Proc))
|
||||
pubsub = Minitest::Mock.new connection.pubsub
|
||||
|
||||
channel = SymbolChannel.new connection, ""
|
||||
channel.subscribe_to_channel
|
||||
pubsub.expect(:subscribe, nil, ["channel", Proc, Proc])
|
||||
pubsub.expect(:unsubscribe, nil, ["channel", Proc])
|
||||
|
||||
wait_for_async
|
||||
connection.stub(:pubsub, pubsub) do
|
||||
channel = SymbolChannel.new connection, ""
|
||||
channel.subscribe_to_channel
|
||||
|
||||
connection.pubsub.expects(:unsubscribe)
|
||||
channel.unsubscribe_from_channel
|
||||
wait_for_async
|
||||
|
||||
channel.unsubscribe_from_channel
|
||||
end
|
||||
|
||||
assert pubsub.verify
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -43,10 +43,11 @@ class ActionCable::Connection::ClientSocketTest < ActionCable::TestCase
|
|||
|
||||
# Internal hax = :(
|
||||
client = connection.websocket.send(:websocket)
|
||||
client.instance_variable_get("@stream").expects(:write).raises("foo")
|
||||
client.instance_variable_get("@stream").stub(:write, proc { raise "foo" }) do
|
||||
|
||||
assert_not_called(client, :client_gone) do
|
||||
client.write("boo")
|
||||
assert_not_called(client, :client_gone) do
|
||||
client.write("boo")
|
||||
end
|
||||
end
|
||||
assert_equal %w[ foo ], connection.errors
|
||||
end
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
require "test_helper"
|
||||
require "active_support/testing/method_call_assertions"
|
||||
require "minitest/mock"
|
||||
require "stubs/test_server"
|
||||
|
||||
class ActionCable::Connection::StreamTest < ActionCable::TestCase
|
||||
|
@ -44,10 +45,11 @@ class ActionCable::Connection::StreamTest < ActionCable::TestCase
|
|||
|
||||
# Internal hax = :(
|
||||
client = connection.websocket.send(:websocket)
|
||||
client.instance_variable_get("@stream").instance_variable_get("@rack_hijack_io").expects(:write).raises(closed_exception, "foo")
|
||||
|
||||
assert_called(client, :client_gone) do
|
||||
client.write("boo")
|
||||
rack_hijack_io = client.instance_variable_get("@stream").instance_variable_get("@rack_hijack_io")
|
||||
rack_hijack_io.stub(:write, proc { raise(closed_exception, "foo") }) do
|
||||
assert_called(client, :client_gone) do
|
||||
client.write("boo")
|
||||
end
|
||||
end
|
||||
assert_equal [], connection.errors
|
||||
end
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require "stubs/user"
|
||||
|
||||
class TestConnection
|
||||
attr_reader :identifiers, :logger, :current_user, :server, :transmissions
|
||||
attr_reader :identifiers, :logger, :current_user, :server, :subscriptions, :transmissions
|
||||
|
||||
delegate :pubsub, to: :server
|
||||
|
||||
|
|
Loading…
Reference in New Issue