mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-24 21:12:38 -04:00
1be43911b4
Set Prettier's "trailingComma" setting to "es5" GitOrigin-RevId: 9f14150511929a855b27467ad17be6ab262fe5d5
80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
const sinon = require('sinon')
|
|
const { expect } = require('chai')
|
|
const { ObjectId } = require('mongodb')
|
|
const SandboxedModule = require('sandboxed-module')
|
|
const { Project } = require('../helpers/models/Project')
|
|
|
|
const MODULE_PATH =
|
|
'../../../../app/src/Features/Project/ProjectAuditLogHandler'
|
|
|
|
describe('ProjectAuditLogHandler', function () {
|
|
beforeEach(function () {
|
|
this.projectId = ObjectId()
|
|
this.userId = ObjectId()
|
|
this.ProjectMock = sinon.mock(Project)
|
|
this.ProjectAuditLogHandler = SandboxedModule.require(MODULE_PATH, {
|
|
requires: {
|
|
'../../models/Project': { Project },
|
|
},
|
|
})
|
|
})
|
|
|
|
afterEach(function () {
|
|
this.ProjectMock.restore()
|
|
})
|
|
|
|
describe('addEntry', function () {
|
|
describe('success', function () {
|
|
beforeEach(async function () {
|
|
this.dbUpdate = this.ProjectMock.expects('updateOne').withArgs(
|
|
{ _id: this.projectId },
|
|
{
|
|
$push: {
|
|
auditLog: {
|
|
$each: [
|
|
{
|
|
operation: 'translate',
|
|
initiatorId: this.userId,
|
|
info: { destinationLanguage: 'tagalog' },
|
|
timestamp: sinon.match.typeOf('date'),
|
|
},
|
|
],
|
|
$slice: -200,
|
|
},
|
|
},
|
|
}
|
|
)
|
|
this.dbUpdate.chain('exec').resolves({ nModified: 1 })
|
|
this.operationId = await this.ProjectAuditLogHandler.promises.addEntry(
|
|
this.projectId,
|
|
'translate',
|
|
this.userId,
|
|
{ destinationLanguage: 'tagalog' }
|
|
)
|
|
})
|
|
|
|
it('writes a log', async function () {
|
|
this.ProjectMock.verify()
|
|
})
|
|
})
|
|
|
|
describe('when the project does not exist', function () {
|
|
beforeEach(function () {
|
|
this.ProjectMock.expects('updateOne')
|
|
.chain('exec')
|
|
.resolves({ nModified: 0 })
|
|
})
|
|
|
|
it('throws an error', async function () {
|
|
await expect(
|
|
this.ProjectAuditLogHandler.promises.addEntry(
|
|
this.projectId,
|
|
'translate',
|
|
this.userId,
|
|
{ destinationLanguage: 'tagalog' }
|
|
)
|
|
).to.be.rejected
|
|
})
|
|
})
|
|
})
|
|
})
|