diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2016-11-21 16:24:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-21 16:24:03 +0100 |
commit | bb2a832b9b063c41864c0490ca0ed6fee59eb2e4 (patch) | |
tree | 3f99ac7b04a6667e25c956f94277690242336096 | |
parent | e49237387bf9a2778d5c92c5a5590e86fddfbc7e (diff) | |
parent | 7083fa27a4151e063b750249ae7902104a897968 (diff) | |
download | rails-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
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) |