spec/javascript/transport_spec.js in faye-0.8.8 vs spec/javascript/transport_spec.js in faye-0.8.9

- old
+ new

@@ -1,9 +1,14 @@ JS.ENV.TransportSpec = JS.Test.describe("Transport", function() { with(this) { before(function() { with(this) { - this.client = {endpoint: "http://example.com/", endpoints: {}, transports: {}} - + this.client = { + endpoint: "http://example.com/", + endpoints: {}, + transports: {}, + getClientId: function() {} + } + if (Faye.Transport.NodeLocal) { this.LocalTransport = Faye.Transport.NodeLocal this.HttpTransport = Faye.Transport.NodeHttp this.inProcess = "in-process" this.longPolling = "long-polling" @@ -12,116 +17,116 @@ this.HttpTransport = Faye.Transport.XHR this.inProcess = "websocket" this.longPolling = "long-polling" } }}) - + describe("get", function() { with(this) { before(function() { with(this) { stub(HttpTransport, "isUsable").yields([false]) stub(LocalTransport, "isUsable").yields([false]) }}) - + describe("when no transport is usable", function() { with(this) { it("raises an exception", function() { with(this) { - assertThrows(Error, function() { Faye.Transport.get(client, [longPolling, inProcess]) }) + assertThrows(Error, function() { Faye.Transport.get(client, [longPolling, inProcess], []) }) }}) }}) - + describe("when a less preferred transport is usable", function() { with(this) { before(function() { with(this) { stub(HttpTransport, "isUsable").yields([true]) }}) - + it("returns a transport of the usable type", function() { with(this) { - Faye.Transport.get(client, [longPolling, inProcess], function(transport) { + Faye.Transport.get(client, [longPolling, inProcess], [], function(transport) { assertKindOf( HttpTransport, transport ) }) }}) - + it("raises an exception if the usable type is not requested", function() { with(this) { - assertThrows(Error, function() { Faye.Transport.get(client, [inProcess]) }) + assertThrows(Error, function() { Faye.Transport.get(client, [inProcess], []) }) }}) - + it("allows the usable type to be specifically selected", function() { with(this) { - Faye.Transport.get(client, [longPolling], function(transport) { + Faye.Transport.get(client, [longPolling], [], function(transport) { assertKindOf( HttpTransport, transport ) }) }}) }}) - + describe("when all transports are usable", function() { with(this) { before(function() { with(this) { stub(LocalTransport, "isUsable").yields([true]) stub(HttpTransport, "isUsable").yields([true]) }}) - + it("returns the most preferred type", function() { with(this) { - Faye.Transport.get(client, [longPolling, inProcess], function(transport) { + Faye.Transport.get(client, [longPolling, inProcess], [], function(transport) { assertKindOf( LocalTransport, transport ) }) }}) - + it("allows types to be specifically selected", function() { with(this) { - Faye.Transport.get(client, [inProcess], function(transport) { + Faye.Transport.get(client, [inProcess], [], function(transport) { assertKindOf( LocalTransport, transport ) }) - Faye.Transport.get(client, [longPolling], function(transport) { + Faye.Transport.get(client, [longPolling], [], function(transport) { assertKindOf( HttpTransport, transport ) }) }}) }}) }}) - + describe("send", function() { with(this) { include(JS.Test.FakeClock) before(function() { this.clock.stub() }) after(function() { this.clock.reset() }) - + describe("for batching transports", function() { with(this) { before(function() { with(this) { this.Transport = Faye.Class(Faye.Transport, {batching: true}) this.transport = new Transport(client) }}) - + it("does not make an immediate request", function() { with(this) { expect(transport, "request").exactly(0) transport.send({batch: "me"}, 60) }}) - + it("queues the message to be sent after a timeout", function() { with(this) { expect(transport, "request").given([{batch: "me"}], 60) transport.send({batch: "me"}, 60) clock.tick(10) }}) - + it("allows multiple messages to be batched together", function() { with(this) { expect(transport, "request").given([{id: 1}, {id: 2}], 60) transport.send({id: 1}, 60) transport.send({id: 2}, 60) clock.tick(10) }}) - + it("adds advice to connect messages sent with others", function() { with(this) { expect(transport, "request").given([{channel: "/meta/connect", advice: {timeout: 0}}, {}], 60) transport.send({channel: "/meta/connect"}, 60) transport.send({}, 60) clock.tick(10) }}) - + it("adds no advice to connect messages sent alone", function() { with(this) { expect(transport, "request").given([{channel: "/meta/connect"}], 60) transport.send({channel: "/meta/connect"}, 60) clock.tick(10) }}) }}) - + describe("for non-batching transports", function() { with(this) { before(function() { with(this) { this.Transport = Faye.Class(Faye.Transport, {batching: false}) this.transport = new Transport(client) }}) - + it("makes a request immediately", function() { with(this) { expect(transport, "request").given([{no: "batch"}], 60) transport.send({no: "batch"}, 60) }}) }})