// TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS102: Remove unnecessary code created because of implicit returns * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ const RealTimeClient = require('./helpers/RealTimeClient') const FixturesManager = require('./helpers/FixturesManager') const { expect } = require('chai') const async = require('async') const request = require('request') const drain = function (rate, callback) { request.post( { url: `http://127.0.0.1:3026/drain?rate=${rate}`, }, (error, response, data) => callback(error, data) ) return null } describe('DrainManagerTests', function () { before(function (done) { FixturesManager.setUpProject( { privilegeLevel: 'owner', project: { name: 'Test Project', }, }, (e, { project_id: projectId, user_id: userId }) => { this.project_id = projectId this.user_id = userId return done() } ) return null }) before(function (done) { // cleanup to speedup reconnecting this.timeout(10000) return RealTimeClient.disconnectAllClients(done) }) // trigger and check cleanup it('should have disconnected all previous clients', function (done) { return RealTimeClient.getConnectedClients((error, data) => { if (error) { return done(error) } expect(data.length).to.equal(0) return done() }) }) return describe('with two clients in the project', function () { beforeEach(function (done) { return async.series( [ cb => { this.clientA = RealTimeClient.connect(this.project_id, cb) }, cb => { this.clientB = RealTimeClient.connect(this.project_id, cb) }, ], done ) }) return describe('starting to drain', function () { beforeEach(function (done) { return async.parallel( [ cb => { return this.clientA.on('reconnectGracefully', cb) }, cb => { return this.clientB.on('reconnectGracefully', cb) }, cb => drain(2, cb), ], done ) }) afterEach(function (done) { return drain(0, done) }) // reset drain it('should not timeout', function () { return expect(true).to.equal(true) }) return it('should not have disconnected', function () { expect(this.clientA.socket.connected).to.equal(true) return expect(this.clientB.socket.connected).to.equal(true) }) }) }) })