提交 410a32ff 编写于 作者: J Javan Makhmali 提交者: Jon Moss

Add helper for testing against a mock WebSocket and server

上级 fb0f0c7f
#= require action_cable
#= require_tree ./test_helpers
#= require ./test_helpers
#= require_tree ./unit
#= require mock-socket
{TestHelpers} = ActionCable
TestHelpers.consumerTest = (name, options = {}, callback) ->
unless callback?
callback = options
options = {}
options.url ?= TestHelpers.testURL
QUnit.test name, (assert) ->
doneAsync = assert.async()
ActionCable.WebSocket = MockWebSocket
server = new MockServer options.url
consumer = ActionCable.createConsumer(options.url)
server.on "connection", ->
clients = server.clients()
assert.equal clients.length, 1
assert.equal clients[0].readyState, WebSocket.OPEN
done = ->
consumer.disconnect()
server.close()
doneAsync()
testData = {assert, consumer, server, done}
if options.connect is false
callback(testData)
else
server.on "connection", ->
testData.client = server.clients()[0]
callback(testData)
consumer.connect()
......@@ -3,3 +3,6 @@
ActionCable.TestHelpers =
testURL: "ws://cable.example.com/"
originalWebSocket = ActionCable.WebSocket
QUnit.testDone -> ActionCable.WebSocket = originalWebSocket
#= require mock-socket
ActionCable.TestHelpers.MockWebSocket = MockWebSocket
server = null
consumer = null
ActionCable.TestHelpers.createConsumer = (url, callback) ->
server = new MockServer url
consumer = ActionCable.createConsumer(url)
callback(consumer, server)
QUnit.testDone ->
if consumer?
consumer.disconnect()
if server?
server.clients().forEach (client) -> client.close()
server.close()
{module, test} = QUnit
{testURL, MockWebSocket, createConsumer} = ActionCable.TestHelpers
{consumerTest} = ActionCable.TestHelpers
module "ActionCable.Consumer", ->
module 'with MockWebSocket', (hooks) ->
originalWebSocket = ActionCable.WebSocket
consumerTest "#connect", connect: false, ({consumer, server, done}) ->
server.on("connection", done)
consumer.connect()
hooks.beforeEach ->
ActionCable.WebSocket = MockWebSocket
hooks.afterEach ->
ActionCable.WebSocket = originalWebSocket
test "#connect", (assert) ->
done = assert.async()
createConsumer testURL, (consumer, server) ->
server.on "connection", ->
clients = server.clients()
assert.equal clients.length, 1
assert.equal clients[0].readyState, WebSocket.OPEN
done()
consumer.connect()
test "#disconnect", (assert) ->
done = assert.async()
createConsumer testURL, (consumer, server) ->
server.on "connection", ->
clients = server.clients()
assert.equal clients.length, 1
clients[0].addEventListener "close", (event) ->
assert.equal event.type, "close"
done()
consumer.disconnect()
consumer.connect()
consumerTest "#disconnect", ({consumer, client, done}) ->
client.addEventListener("close", done)
consumer.disconnect()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册