aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2016-11-21 16:24:03 +0100
committerGitHub <noreply@github.com>2016-11-21 16:24:03 +0100
commitbb2a832b9b063c41864c0490ca0ed6fee59eb2e4 (patch)
tree3f99ac7b04a6667e25c956f94277690242336096
parente49237387bf9a2778d5c92c5a5590e86fddfbc7e (diff)
parent7083fa27a4151e063b750249ae7902104a897968 (diff)
downloadrails-bb2a832b9b063c41864c0490ca0ed6fee59eb2e4.tar.gz
rails-bb2a832b9b063c41864c0490ca0ed6fee59eb2e4.tar.bz2
rails-bb2a832b9b063c41864c0490ca0ed6fee59eb2e4.zip
Merge pull request #27123 from javan/actioncable/js-test-updates
Action Cable: JavaScript test updates
-rw-r--r--Gemfile.lock26
-rw-r--r--actioncable/test/javascript/src/test_helpers/consumer_test_helper.coffee10
-rw-r--r--actioncable/test/javascript/src/test_helpers/index.coffee3
-rw-r--r--actioncable/test/javascript/src/unit/subscription_test.coffee40
-rw-r--r--actioncable/test/javascript/src/unit/subscriptions_test.coffee25
5 files changed, 92 insertions, 12 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index bec01cda4a..a4fb43ceb8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -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)
diff --git a/actioncable/test/javascript/src/test_helpers/consumer_test_helper.coffee b/actioncable/test/javascript/src/test_helpers/consumer_test_helper.coffee
index 6b145dede8..a9e95c37f0 100644
--- a/actioncable/test/javascript/src/test_helpers/consumer_test_helper.coffee
+++ b/actioncable/test/javascript/src/test_helpers/consumer_test_helper.coffee
@@ -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()
diff --git a/actioncable/test/javascript/src/test_helpers/index.coffee b/actioncable/test/javascript/src/test_helpers/index.coffee
index d36524d9cc..c84cbbcb2c 100644
--- a/actioncable/test/javascript/src/test_helpers/index.coffee
+++ b/actioncable/test/javascript/src/test_helpers/index.coffee
@@ -4,5 +4,8 @@
ActionCable.TestHelpers =
testURL: "ws://cable.example.com/"
+ defer: (callback) ->
+ setTimeout(callback, 1)
+
originalWebSocket = ActionCable.WebSocket
QUnit.testDone -> ActionCable.WebSocket = originalWebSocket
diff --git a/actioncable/test/javascript/src/unit/subscription_test.coffee b/actioncable/test/javascript/src/unit/subscription_test.coffee
new file mode 100644
index 0000000000..07027ed170
--- /dev/null
+++ b/actioncable/test/javascript/src/unit/subscription_test.coffee
@@ -0,0 +1,40 @@
+{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")
diff --git a/actioncable/test/javascript/src/unit/subscriptions_test.coffee b/actioncable/test/javascript/src/unit/subscriptions_test.coffee
new file mode 100644
index 0000000000..170b370e4a
--- /dev/null
+++ b/actioncable/test/javascript/src/unit/subscriptions_test.coffee
@@ -0,0 +1,25 @@
+{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)