mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
add unit test for withRevCheck method
This commit is contained in:
parent
7b904d9a9d
commit
8afdc8cbd4
2 changed files with 36 additions and 4 deletions
|
@ -15,7 +15,7 @@ const { db, ObjectId } = require('./mongodb')
|
||||||
const logger = require('logger-sharelatex')
|
const logger = require('logger-sharelatex')
|
||||||
const metrics = require('@overleaf/metrics')
|
const metrics = require('@overleaf/metrics')
|
||||||
const Settings = require('@overleaf/settings')
|
const Settings = require('@overleaf/settings')
|
||||||
const { DocModifiedError } = require('./Errors')
|
const Errors = require('./Errors')
|
||||||
const { promisify } = require('util')
|
const { promisify } = require('util')
|
||||||
|
|
||||||
module.exports = MongoManager = {
|
module.exports = MongoManager = {
|
||||||
|
@ -206,7 +206,7 @@ module.exports = MongoManager = {
|
||||||
if (err) return callback(err)
|
if (err) return callback(err)
|
||||||
if (doc.rev !== currentRev) {
|
if (doc.rev !== currentRev) {
|
||||||
return callback(
|
return callback(
|
||||||
new DocModifiedError('doc rev has changed', {
|
new Errors.DocModifiedError('doc rev has changed', {
|
||||||
doc_id: doc._id,
|
doc_id: doc._id,
|
||||||
rev: doc.rev,
|
rev: doc.rev,
|
||||||
currentRev,
|
currentRev,
|
||||||
|
|
|
@ -29,7 +29,7 @@ describe('MongoManager', function () {
|
||||||
},
|
},
|
||||||
'@overleaf/metrics': { timeAsyncMethod: sinon.stub() },
|
'@overleaf/metrics': { timeAsyncMethod: sinon.stub() },
|
||||||
'@overleaf/settings': { max_deleted_docs: 42 },
|
'@overleaf/settings': { max_deleted_docs: 42 },
|
||||||
'./Errors': { Errors },
|
'./Errors': Errors,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
this.project_id = ObjectId().toString()
|
this.project_id = ObjectId().toString()
|
||||||
|
@ -307,7 +307,7 @@ describe('MongoManager', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
return describe('setDocVersion', function () {
|
describe('setDocVersion', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
this.version = 42
|
this.version = 42
|
||||||
this.db.docOps.updateOne = sinon.stub().callsArg(3)
|
this.db.docOps.updateOne = sinon.stub().callsArg(3)
|
||||||
|
@ -340,4 +340,36 @@ describe('MongoManager', function () {
|
||||||
return this.callback.called.should.equal(true)
|
return this.callback.called.should.equal(true)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('withRevCheck', function () {
|
||||||
|
this.beforeEach(function () {
|
||||||
|
this.doc = { _id: ObjectId(), name: 'mock-doc', rev: 1 }
|
||||||
|
this.testFunction = sinon.stub().yields(null, 'foo')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should call the callback when the rev has not changed', function (done) {
|
||||||
|
this.db.docs.findOne = sinon.stub().callsArgWith(2, null, { rev: 1 })
|
||||||
|
this.MongoManager.withRevCheck(
|
||||||
|
this.doc,
|
||||||
|
this.testFunction,
|
||||||
|
(err, result) => {
|
||||||
|
result.should.equal('foo')
|
||||||
|
assert.isNull(err)
|
||||||
|
done()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return an error when the rev has changed', function (done) {
|
||||||
|
this.db.docs.findOne = sinon.stub().callsArgWith(2, null, { rev: 2 })
|
||||||
|
this.MongoManager.withRevCheck(
|
||||||
|
this.doc,
|
||||||
|
this.testFunction,
|
||||||
|
(err, result) => {
|
||||||
|
err.should.be.instanceof(Errors.DocModifiedError)
|
||||||
|
done()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue