mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-31 21:01:33 +02:00
[misc] upgrade eslint packages to the latest version everywhere GitOrigin-RevId: f1480d4a171acef82fb26c4aa54be3a6088b0ab3
182 lines
5.3 KiB
JavaScript
182 lines
5.3 KiB
JavaScript
/* eslint-disable
|
|
n/handle-callback-err,
|
|
max-len,
|
|
no-return-assign,
|
|
*/
|
|
// 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 SandboxedModule = require('sandboxed-module')
|
|
const sinon = require('sinon')
|
|
const { expect } = require('chai')
|
|
const modulePath = require('path').join(
|
|
__dirname,
|
|
'../../../../app/src/Features/Cooldown/CooldownManager'
|
|
)
|
|
|
|
describe('CooldownManager', function () {
|
|
beforeEach(function () {
|
|
this.projectId = 'abcdefg'
|
|
this.rclient = { set: sinon.stub(), get: sinon.stub() }
|
|
this.RedisWrapper = { client: () => this.rclient }
|
|
return (this.CooldownManager = SandboxedModule.require(modulePath, {
|
|
requires: {
|
|
'../../infrastructure/RedisWrapper': this.RedisWrapper,
|
|
},
|
|
}))
|
|
})
|
|
|
|
describe('_buildKey', function () {
|
|
it('should build a properly formatted redis key', function () {
|
|
return expect(this.CooldownManager._buildKey('ABC')).to.equal(
|
|
'Cooldown:{ABC}'
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('isProjectOnCooldown', function () {
|
|
beforeEach(function () {
|
|
return (this.call = cb => {
|
|
return this.CooldownManager.isProjectOnCooldown(this.projectId, cb)
|
|
})
|
|
})
|
|
|
|
describe('when project is on cooldown', function () {
|
|
beforeEach(function () {
|
|
return (this.rclient.get = sinon.stub().callsArgWith(1, null, '1'))
|
|
})
|
|
|
|
it('should fetch key from redis', function (done) {
|
|
return this.call((err, result) => {
|
|
this.rclient.get.callCount.should.equal(1)
|
|
this.rclient.get.calledWith('Cooldown:{abcdefg}').should.equal(true)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('should not produce an error', function (done) {
|
|
return this.call((err, result) => {
|
|
expect(err).to.equal(null)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('should produce a true result', function (done) {
|
|
return this.call((err, result) => {
|
|
expect(result).to.equal(true)
|
|
return done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('when project is not on cooldown', function () {
|
|
beforeEach(function () {
|
|
return (this.rclient.get = sinon.stub().callsArgWith(1, null, null))
|
|
})
|
|
|
|
it('should fetch key from redis', function (done) {
|
|
return this.call((err, result) => {
|
|
this.rclient.get.callCount.should.equal(1)
|
|
this.rclient.get.calledWith('Cooldown:{abcdefg}').should.equal(true)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('should not produce an error', function (done) {
|
|
return this.call((err, result) => {
|
|
expect(err).to.equal(null)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('should produce a false result', function (done) {
|
|
return this.call((err, result) => {
|
|
expect(result).to.equal(false)
|
|
return done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('when rclient.get produces an error', function () {
|
|
beforeEach(function () {
|
|
return (this.rclient.get = sinon
|
|
.stub()
|
|
.callsArgWith(1, new Error('woops')))
|
|
})
|
|
|
|
it('should fetch key from redis', function (done) {
|
|
return this.call((err, result) => {
|
|
this.rclient.get.callCount.should.equal(1)
|
|
this.rclient.get.calledWith('Cooldown:{abcdefg}').should.equal(true)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('should produce an error', function (done) {
|
|
return this.call((err, result) => {
|
|
expect(err).to.not.equal(null)
|
|
expect(err).to.be.instanceof(Error)
|
|
return done()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('putProjectOnCooldown', function () {
|
|
beforeEach(function () {
|
|
return (this.call = cb => {
|
|
return this.CooldownManager.putProjectOnCooldown(this.projectId, cb)
|
|
})
|
|
})
|
|
|
|
describe('when rclient.set does not produce an error', function () {
|
|
beforeEach(function () {
|
|
return (this.rclient.set = sinon.stub().callsArgWith(4, null))
|
|
})
|
|
|
|
it('should set a key in redis', function (done) {
|
|
return this.call(err => {
|
|
this.rclient.set.callCount.should.equal(1)
|
|
this.rclient.set.calledWith('Cooldown:{abcdefg}').should.equal(true)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('should not produce an error', function (done) {
|
|
return this.call(err => {
|
|
expect(err).to.equal(null)
|
|
return done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('when rclient.set produces an error', function () {
|
|
beforeEach(function () {
|
|
return (this.rclient.set = sinon
|
|
.stub()
|
|
.callsArgWith(4, new Error('woops')))
|
|
})
|
|
|
|
it('should set a key in redis', function (done) {
|
|
return this.call(err => {
|
|
this.rclient.set.callCount.should.equal(1)
|
|
this.rclient.set.calledWith('Cooldown:{abcdefg}').should.equal(true)
|
|
return done()
|
|
})
|
|
})
|
|
|
|
it('produce an error', function (done) {
|
|
return this.call(err => {
|
|
expect(err).to.not.equal(null)
|
|
expect(err).to.be.instanceof(Error)
|
|
return done()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|