Skip to content

Commit bb2a832

Browse files
authored
Merge pull request rails#27123 from javan/actioncable/js-test-updates
Action Cable: JavaScript test updates
2 parents e492373 + 7083fa2 commit bb2a832

File tree

5 files changed

+92
-12
lines changed

5 files changed

+92
-12
lines changed

Gemfile.lock

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ PATH
118118
GEM
119119
remote: https://rubygems.org/
120120
specs:
121-
addressable (2.4.0)
121+
addressable (2.5.0)
122+
public_suffix (~> 2.0, >= 2.0.2)
122123
amq-protocol (2.0.1)
123124
arel (7.1.2)
124125
backburner (1.3.1)
@@ -130,9 +131,9 @@ GEM
130131
bcrypt (3.1.11-x86-mingw32)
131132
beaneater (1.0.0)
132133
benchmark-ips (2.7.2)
133-
blade (0.5.6)
134+
blade (0.6.1)
134135
activesupport (>= 3.0.0)
135-
blade-qunit_adapter (~> 1.20.0)
136+
blade-qunit_adapter (~> 2.0.1)
136137
coffee-script
137138
coffee-script-source
138139
curses (~> 1.0.0)
@@ -143,8 +144,8 @@ GEM
143144
thin (>= 1.6.0)
144145
thor (~> 0.19.1)
145146
useragent (~> 0.16.7)
146-
blade-qunit_adapter (1.20.0)
147-
blade-sauce_labs_plugin (0.5.3)
147+
blade-qunit_adapter (2.0.1)
148+
blade-sauce_labs_plugin (0.6.1)
148149
childprocess
149150
faraday
150151
selenium-webdriver
@@ -181,21 +182,21 @@ GEM
181182
eventmachine (>= 1.0.0.beta.4)
182183
erubis (2.7.0)
183184
event_emitter (0.2.5)
184-
eventmachine (1.2.0.1)
185-
eventmachine (1.2.0.1-x64-mingw32)
186-
eventmachine (1.2.0.1-x86-mingw32)
185+
eventmachine (1.2.1)
186+
eventmachine (1.2.1-x64-mingw32)
187+
eventmachine (1.2.1-x86-mingw32)
187188
execjs (2.7.0)
188-
faraday (0.9.2)
189+
faraday (0.10.0)
189190
multipart-post (>= 1.2, < 3)
190-
faye (1.2.2)
191+
faye (1.2.3)
191192
cookiejar (>= 0.3.0)
192193
em-http-request (>= 0.3.0)
193194
eventmachine (>= 0.12.0)
194195
faye-websocket (>= 0.9.1)
195196
multi_json (>= 1.0.0)
196197
rack (>= 1.0.0)
197198
websocket-driver (>= 0.5.1)
198-
faye-websocket (0.10.4)
199+
faye-websocket (0.10.5)
199200
eventmachine (>= 0.12.0)
200201
websocket-driver (>= 0.5.1)
201202
ffi (1.9.14)
@@ -250,6 +251,7 @@ GEM
250251
pg (0.19.0-x64-mingw32)
251252
pg (0.19.0-x86-mingw32)
252253
psych (2.1.1)
254+
public_suffix (2.0.4)
253255
puma (3.6.0)
254256
qu (0.2.0)
255257
multi_json
@@ -294,7 +296,7 @@ GEM
294296
tilt (>= 1.1, < 3)
295297
sdoc (1.0.0.beta2)
296298
rdoc (= 5.0.0.beta2)
297-
selenium-webdriver (2.53.4)
299+
selenium-webdriver (3.0.1)
298300
childprocess (~> 0.5)
299301
rubyzip (~> 1.0)
300302
websocket (~> 1.0)

actioncable/test/javascript/src/test_helpers/consumer_test_helper.coffee

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ TestHelpers.consumerTest = (name, options = {}, callback) ->
2121
assert.equal clients.length, 1
2222
assert.equal clients[0].readyState, WebSocket.OPEN
2323

24+
server.broadcastTo = (subscription, data = {}, callback) ->
25+
data.identifier = subscription.identifier
26+
27+
if data.message_type
28+
data.type = ActionCable.INTERNAL.message_types[data.message_type]
29+
delete data.message_type
30+
31+
server.send(JSON.stringify(data))
32+
TestHelpers.defer(callback)
33+
2434
done = ->
2535
consumer.disconnect()
2636
server.close()

actioncable/test/javascript/src/test_helpers/index.coffee

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@
44
ActionCable.TestHelpers =
55
testURL: "ws://cable.example.com/"
66

7+
defer: (callback) ->
8+
setTimeout(callback, 1)
9+
710
originalWebSocket = ActionCable.WebSocket
811
QUnit.testDone -> ActionCable.WebSocket = originalWebSocket
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{module, test} = QUnit
2+
{consumerTest} = ActionCable.TestHelpers
3+
4+
module "ActionCable.Subscription", ->
5+
consumerTest "#initialized callback", ({server, consumer, assert, done}) ->
6+
consumer.subscriptions.create "chat",
7+
initialized: ->
8+
assert.ok true
9+
done()
10+
11+
consumerTest "#connected callback", ({server, consumer, assert, done}) ->
12+
subscription = consumer.subscriptions.create "chat",
13+
connected: ->
14+
assert.ok true
15+
done()
16+
17+
server.broadcastTo(subscription, message_type: "confirmation")
18+
19+
consumerTest "#disconnected callback", ({server, consumer, assert, done}) ->
20+
subscription = consumer.subscriptions.create "chat",
21+
disconnected: ->
22+
assert.ok true
23+
done()
24+
25+
server.broadcastTo subscription, message_type: "confirmation", ->
26+
server.close()
27+
28+
consumerTest "#perform", ({consumer, server, assert, done}) ->
29+
subscription = consumer.subscriptions.create "chat",
30+
connected: ->
31+
@perform(publish: "hi")
32+
33+
server.on "message", (message) ->
34+
data = JSON.parse(message)
35+
assert.equal data.identifier, subscription.identifier
36+
assert.equal data.command, "message"
37+
assert.deepEqual data.data, JSON.stringify(action: { publish: "hi" })
38+
done()
39+
40+
server.broadcastTo(subscription, message_type: "confirmation")
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{module, test} = QUnit
2+
{consumerTest} = ActionCable.TestHelpers
3+
4+
module "ActionCable.Subscriptions", ->
5+
consumerTest "create subscription with channel string", ({consumer, server, assert, done}) ->
6+
channel = "chat"
7+
8+
server.on "message", (message) ->
9+
data = JSON.parse(message)
10+
assert.equal data.command, "subscribe"
11+
assert.equal data.identifier, JSON.stringify({channel})
12+
done()
13+
14+
consumer.subscriptions.create(channel)
15+
16+
consumerTest "create subscription with channel object", ({consumer, server, assert, done}) ->
17+
channel = channel: "chat", room: "action"
18+
19+
server.on "message", (message) ->
20+
data = JSON.parse(message)
21+
assert.equal data.command, "subscribe"
22+
assert.equal data.identifier, JSON.stringify(channel)
23+
done()
24+
25+
consumer.subscriptions.create(channel)

0 commit comments

Comments
 (0)