提交 bb2a832b 编写于 作者: K Kasper Timm Hansen 提交者: GitHub

Merge pull request #27123 from javan/actioncable/js-test-updates

Action Cable: JavaScript test updates
......@@ -118,7 +118,8 @@ PATH
GEM
remote: https://rubygems.org/
specs:
addressable (2.4.0)
addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2)
amq-protocol (2.0.1)
arel (7.1.2)
backburner (1.3.1)
......@@ -130,9 +131,9 @@ GEM
bcrypt (3.1.11-x86-mingw32)
beaneater (1.0.0)
benchmark-ips (2.7.2)
blade (0.5.6)
blade (0.6.1)
activesupport (>= 3.0.0)
blade-qunit_adapter (~> 1.20.0)
blade-qunit_adapter (~> 2.0.1)
coffee-script
coffee-script-source
curses (~> 1.0.0)
......@@ -143,8 +144,8 @@ GEM
thin (>= 1.6.0)
thor (~> 0.19.1)
useragent (~> 0.16.7)
blade-qunit_adapter (1.20.0)
blade-sauce_labs_plugin (0.5.3)
blade-qunit_adapter (2.0.1)
blade-sauce_labs_plugin (0.6.1)
childprocess
faraday
selenium-webdriver
......@@ -181,13 +182,13 @@ GEM
eventmachine (>= 1.0.0.beta.4)
erubis (2.7.0)
event_emitter (0.2.5)
eventmachine (1.2.0.1)
eventmachine (1.2.0.1-x64-mingw32)
eventmachine (1.2.0.1-x86-mingw32)
eventmachine (1.2.1)
eventmachine (1.2.1-x64-mingw32)
eventmachine (1.2.1-x86-mingw32)
execjs (2.7.0)
faraday (0.9.2)
faraday (0.10.0)
multipart-post (>= 1.2, < 3)
faye (1.2.2)
faye (1.2.3)
cookiejar (>= 0.3.0)
em-http-request (>= 0.3.0)
eventmachine (>= 0.12.0)
......@@ -195,7 +196,7 @@ GEM
multi_json (>= 1.0.0)
rack (>= 1.0.0)
websocket-driver (>= 0.5.1)
faye-websocket (0.10.4)
faye-websocket (0.10.5)
eventmachine (>= 0.12.0)
websocket-driver (>= 0.5.1)
ffi (1.9.14)
......@@ -250,6 +251,7 @@ GEM
pg (0.19.0-x64-mingw32)
pg (0.19.0-x86-mingw32)
psych (2.1.1)
public_suffix (2.0.4)
puma (3.6.0)
qu (0.2.0)
multi_json
......@@ -294,7 +296,7 @@ GEM
tilt (>= 1.1, < 3)
sdoc (1.0.0.beta2)
rdoc (= 5.0.0.beta2)
selenium-webdriver (2.53.4)
selenium-webdriver (3.0.1)
childprocess (~> 0.5)
rubyzip (~> 1.0)
websocket (~> 1.0)
......
......@@ -21,6 +21,16 @@ TestHelpers.consumerTest = (name, options = {}, callback) ->
assert.equal clients.length, 1
assert.equal clients[0].readyState, WebSocket.OPEN
server.broadcastTo = (subscription, data = {}, callback) ->
data.identifier = subscription.identifier
if data.message_type
data.type = ActionCable.INTERNAL.message_types[data.message_type]
delete data.message_type
server.send(JSON.stringify(data))
TestHelpers.defer(callback)
done = ->
consumer.disconnect()
server.close()
......
......@@ -4,5 +4,8 @@
ActionCable.TestHelpers =
testURL: "ws://cable.example.com/"
defer: (callback) ->
setTimeout(callback, 1)
originalWebSocket = ActionCable.WebSocket
QUnit.testDone -> ActionCable.WebSocket = originalWebSocket
{module, test} = QUnit
{consumerTest} = ActionCable.TestHelpers
module "ActionCable.Subscription", ->
consumerTest "#initialized callback", ({server, consumer, assert, done}) ->
consumer.subscriptions.create "chat",
initialized: ->
assert.ok true
done()
consumerTest "#connected callback", ({server, consumer, assert, done}) ->
subscription = consumer.subscriptions.create "chat",
connected: ->
assert.ok true
done()
server.broadcastTo(subscription, message_type: "confirmation")
consumerTest "#disconnected callback", ({server, consumer, assert, done}) ->
subscription = consumer.subscriptions.create "chat",
disconnected: ->
assert.ok true
done()
server.broadcastTo subscription, message_type: "confirmation", ->
server.close()
consumerTest "#perform", ({consumer, server, assert, done}) ->
subscription = consumer.subscriptions.create "chat",
connected: ->
@perform(publish: "hi")
server.on "message", (message) ->
data = JSON.parse(message)
assert.equal data.identifier, subscription.identifier
assert.equal data.command, "message"
assert.deepEqual data.data, JSON.stringify(action: { publish: "hi" })
done()
server.broadcastTo(subscription, message_type: "confirmation")
{module, test} = QUnit
{consumerTest} = ActionCable.TestHelpers
module "ActionCable.Subscriptions", ->
consumerTest "create subscription with channel string", ({consumer, server, assert, done}) ->
channel = "chat"
server.on "message", (message) ->
data = JSON.parse(message)
assert.equal data.command, "subscribe"
assert.equal data.identifier, JSON.stringify({channel})
done()
consumer.subscriptions.create(channel)
consumerTest "create subscription with channel object", ({consumer, server, assert, done}) ->
channel = channel: "chat", room: "action"
server.on "message", (message) ->
data = JSON.parse(message)
assert.equal data.command, "subscribe"
assert.equal data.identifier, JSON.stringify(channel)
done()
consumer.subscriptions.create(channel)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册