@emartech/faye-redis-sharded
Version:
Redis backend engine for Faye with support for sharding
85 lines (73 loc) • 2.64 kB
JavaScript
JS.ENV.Server.PublishSpec = JS.Test.describe("Server publish", function() { with(this) {
before(function() { with(this) {
this.engine = {}
stub(Faye.Engine, "get").returns(engine)
this.server = new Faye.Server()
this.message = {channel: "/some/channel", data: "publish"}
}})
describe("publishing a message", function() { with(this) {
it("tells the engine to publish the message", function() { with(this) {
expect(engine, "publish").given(message)
server.process(message, false, function() {})
}})
it("returns a successful response", function() { with(this) {
stub(engine, "publish")
server.process(message, false, function(response) {
assertEqual([
{ channel: "/some/channel",
successful: true
}
], response)
})
}})
describe("with an invalid channel", function() { with(this) {
before(function() { with(this) {
message.channel = "channel"
}})
it("does not tell the engine to publish the message", function() { with(this) {
expect(engine, "publish").exactly(0)
server.process(message, false, function() {})
}})
it("returns an unsuccessful response", function() { with(this) {
stub(engine, "publish")
server.process(message, false, function(response) {
assertEqual([
{ channel: "channel",
successful: false,
error: "405:channel:Invalid channel"
}
], response)
})
}})
}})
describe("with an error", function() { with(this) {
before(function() { with(this) {
message.error = "invalid"
}})
it("does not tell the engine to publish the message", function() { with(this) {
expect(engine, "publish").exactly(0)
server.process(message, false, function() {})
}})
it("returns an unsuccessful response", function() { with(this) {
stub(engine, "publish")
server.process(message, false, function(response) {
assertEqual([
{ channel: "/some/channel",
successful: false,
error: "invalid"
}
], response)
})
}})
}})
describe("to an invalid channel", function() { with(this) {
before(function() { with(this) {
message.channel = "/invalid/*"
}})
it("does not tell the engine to publish the message", function() { with(this) {
expect(engine, "publish").exactly(0)
server.process(message, false, function() {})
}})
}})
}})
}})