mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-01 21:31:36 +02:00
Rename files
GitOrigin-RevId: 80b975b03ebca16328b84fabf11e71bbea87c8bc
This commit is contained in:
102
services/web/test/unit/src/Project/ProjectUpdateHandler.test.mjs
Normal file
102
services/web/test/unit/src/Project/ProjectUpdateHandler.test.mjs
Normal file
@@ -0,0 +1,102 @@
|
||||
const sinon = require('sinon')
|
||||
const modulePath =
|
||||
'../../../../app/src/Features/Project/ProjectUpdateHandler.js'
|
||||
const SandboxedModule = require('sandboxed-module')
|
||||
|
||||
describe('ProjectUpdateHandler', function () {
|
||||
beforeEach(function () {
|
||||
this.fakeTime = new Date()
|
||||
this.clock = sinon.useFakeTimers(this.fakeTime.getTime())
|
||||
})
|
||||
|
||||
afterEach(function () {
|
||||
this.clock.restore()
|
||||
})
|
||||
|
||||
beforeEach(function () {
|
||||
this.ProjectModel = class Project {}
|
||||
this.ProjectModel.updateOne = sinon.stub().returns({
|
||||
exec: sinon.stub(),
|
||||
})
|
||||
this.handler = SandboxedModule.require(modulePath, {
|
||||
requires: {
|
||||
'../../models/Project': { Project: this.ProjectModel },
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
describe('marking a project as recently updated', function () {
|
||||
beforeEach(function () {
|
||||
this.project_id = 'project_id'
|
||||
this.lastUpdatedAt = 987654321
|
||||
this.lastUpdatedBy = 'fake-last-updater-id'
|
||||
})
|
||||
|
||||
it('should send an update to mongo', async function () {
|
||||
await this.handler.promises.markAsUpdated(
|
||||
this.project_id,
|
||||
this.lastUpdatedAt,
|
||||
this.lastUpdatedBy
|
||||
)
|
||||
|
||||
sinon.assert.calledWith(
|
||||
this.ProjectModel.updateOne,
|
||||
{
|
||||
_id: this.project_id,
|
||||
lastUpdated: { $lt: this.lastUpdatedAt },
|
||||
},
|
||||
{
|
||||
lastUpdated: this.lastUpdatedAt,
|
||||
lastUpdatedBy: this.lastUpdatedBy,
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
it('should set smart fallbacks', async function () {
|
||||
await this.handler.promises.markAsUpdated(this.project_id, null, null)
|
||||
sinon.assert.calledWithMatch(
|
||||
this.ProjectModel.updateOne,
|
||||
{
|
||||
_id: this.project_id,
|
||||
lastUpdated: { $lt: this.fakeTime },
|
||||
},
|
||||
{
|
||||
lastUpdated: this.fakeTime,
|
||||
lastUpdatedBy: null,
|
||||
}
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('markAsOpened', function () {
|
||||
it('should send an update to mongo', async function () {
|
||||
const projectId = 'project_id'
|
||||
await this.handler.promises.markAsOpened(projectId)
|
||||
const args = this.ProjectModel.updateOne.args[0]
|
||||
args[0]._id.should.equal(projectId)
|
||||
const date = args[1].lastOpened + ''
|
||||
const now = Date.now() + ''
|
||||
date.substring(0, 5).should.equal(now.substring(0, 5))
|
||||
})
|
||||
})
|
||||
|
||||
describe('markAsInactive', function () {
|
||||
it('should send an update to mongo', async function () {
|
||||
const projectId = 'project_id'
|
||||
await this.handler.promises.markAsInactive(projectId)
|
||||
const args = this.ProjectModel.updateOne.args[0]
|
||||
args[0]._id.should.equal(projectId)
|
||||
args[1].active.should.equal(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('markAsActive', function () {
|
||||
it('should send an update to mongo', async function () {
|
||||
const projectId = 'project_id'
|
||||
await this.handler.promises.markAsActive(projectId)
|
||||
const args = this.ProjectModel.updateOne.args[0]
|
||||
args[0]._id.should.equal(projectId)
|
||||
args[1].active.should.equal(true)
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user