mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
65 lines
1.9 KiB
CoffeeScript
65 lines
1.9 KiB
CoffeeScript
|
should = require('chai').should()
|
||
|
sinon = require "sinon"
|
||
|
SandboxedModule = require('sandboxed-module')
|
||
|
path = require "path"
|
||
|
modulePath = path.join __dirname, "../../../app/js/DrainManager"
|
||
|
|
||
|
describe "DrainManager", ->
|
||
|
beforeEach ->
|
||
|
@DrainManager = SandboxedModule.require modulePath, requires:
|
||
|
"logger-sharelatex": @logger = log: sinon.stub()
|
||
|
@io =
|
||
|
sockets:
|
||
|
clients: sinon.stub()
|
||
|
|
||
|
describe "reconnectNClients", ->
|
||
|
beforeEach ->
|
||
|
@clients = []
|
||
|
for i in [0..9]
|
||
|
@clients[i] = {
|
||
|
id: i
|
||
|
emit: sinon.stub()
|
||
|
}
|
||
|
@io.sockets.clients.returns @clients
|
||
|
|
||
|
describe "after first pass", ->
|
||
|
beforeEach ->
|
||
|
@DrainManager.reconnectNClients(@io, 3)
|
||
|
|
||
|
it "should reconnect the first 3 clients", ->
|
||
|
for i in [0..2]
|
||
|
@clients[i].emit.calledWith("reconnectGracefully").should.equal true
|
||
|
|
||
|
it "should not reconnect any more clients", ->
|
||
|
for i in [3..9]
|
||
|
@clients[i].emit.calledWith("reconnectGracefully").should.equal false
|
||
|
|
||
|
describe "after second pass", ->
|
||
|
beforeEach ->
|
||
|
@DrainManager.reconnectNClients(@io, 3)
|
||
|
|
||
|
it "should reconnect the next 3 clients", ->
|
||
|
for i in [3..5]
|
||
|
@clients[i].emit.calledWith("reconnectGracefully").should.equal true
|
||
|
|
||
|
it "should not reconnect any more clients", ->
|
||
|
for i in [6..9]
|
||
|
@clients[i].emit.calledWith("reconnectGracefully").should.equal false
|
||
|
|
||
|
it "should not reconnect the first 3 clients again", ->
|
||
|
for i in [0..2]
|
||
|
@clients[i].emit.calledOnce.should.equal true
|
||
|
|
||
|
describe "after final pass", ->
|
||
|
beforeEach ->
|
||
|
@DrainManager.reconnectNClients(@io, 100)
|
||
|
|
||
|
it "should not reconnect the first 6 clients again", ->
|
||
|
for i in [0..5]
|
||
|
@clients[i].emit.calledOnce.should.equal true
|
||
|
|
||
|
it "should log out that it reached the end", ->
|
||
|
@logger.log
|
||
|
.calledWith("All clients have been told to reconnectGracefully")
|
||
|
.should.equal true
|