mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 01:53:39 -05:00
Merge pull request #17553 from overleaf/mj-admin-history-ranges-enable
[web] Add button for adding history ranges support in admin panel GitOrigin-RevId: fa85b25719fff753f0d0806ccb02ad2f9db2ee82
This commit is contained in:
parent
919a83c193
commit
44d0b947ce
2 changed files with 42 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
||||||
const { Project } = require('../../models/Project')
|
const { Project } = require('../../models/Project')
|
||||||
const settings = require('@overleaf/settings')
|
const settings = require('@overleaf/settings')
|
||||||
const { callbackify } = require('util')
|
const { callbackify } = require('util')
|
||||||
|
const { db, ObjectId } = require('../../infrastructure/mongodb')
|
||||||
const safeCompilers = ['xelatex', 'pdflatex', 'latex', 'lualatex']
|
const safeCompilers = ['xelatex', 'pdflatex', 'latex', 'lualatex']
|
||||||
|
|
||||||
const ProjectOptionsHandler = {
|
const ProjectOptionsHandler = {
|
||||||
|
@ -62,6 +63,14 @@ const ProjectOptionsHandler = {
|
||||||
const update = { $unset: { brandVariationId: 1 } }
|
const update = { $unset: { brandVariationId: 1 } }
|
||||||
return Project.updateOne(conditions, update, {})
|
return Project.updateOne(conditions, update, {})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async enableHistoryRangesSupport(projectId) {
|
||||||
|
const conditions = { _id: new ObjectId(projectId) }
|
||||||
|
const update = { $set: { 'overleaf.history.rangesSupportEnabled': true } }
|
||||||
|
// NOTE: Updating the Mongoose model with the same query doesn't work. Maybe
|
||||||
|
// because rangesSupportEnabled is not part of the schema?
|
||||||
|
return db.projects.updateOne(conditions, update)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -74,5 +83,8 @@ module.exports = {
|
||||||
unsetBrandVariationId: callbackify(
|
unsetBrandVariationId: callbackify(
|
||||||
ProjectOptionsHandler.unsetBrandVariationId
|
ProjectOptionsHandler.unsetBrandVariationId
|
||||||
),
|
),
|
||||||
|
enableHistoryRangesSupport: callbackify(
|
||||||
|
ProjectOptionsHandler.enableHistoryRangesSupport
|
||||||
|
),
|
||||||
promises: ProjectOptionsHandler,
|
promises: ProjectOptionsHandler,
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ const { expect } = require('chai')
|
||||||
const modulePath =
|
const modulePath =
|
||||||
'../../../../app/src/Features/Project/ProjectOptionsHandler.js'
|
'../../../../app/src/Features/Project/ProjectOptionsHandler.js'
|
||||||
const SandboxedModule = require('sandboxed-module')
|
const SandboxedModule = require('sandboxed-module')
|
||||||
|
const { ObjectId } = require('mongodb')
|
||||||
|
|
||||||
describe('ProjectOptionsHandler', function () {
|
describe('ProjectOptionsHandler', function () {
|
||||||
const projectId = '4eecaffcbffa66588e000008'
|
const projectId = '4eecaffcbffa66588e000008'
|
||||||
|
@ -28,6 +29,12 @@ describe('ProjectOptionsHandler', function () {
|
||||||
}
|
}
|
||||||
this.projectModel.updateOne = sinon.stub().resolves()
|
this.projectModel.updateOne = sinon.stub().resolves()
|
||||||
|
|
||||||
|
this.db = {
|
||||||
|
projects: {
|
||||||
|
updateOne: sinon.stub().resolves(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
this.handler = SandboxedModule.require(modulePath, {
|
this.handler = SandboxedModule.require(modulePath, {
|
||||||
requires: {
|
requires: {
|
||||||
'../../models/Project': { Project: this.projectModel },
|
'../../models/Project': { Project: this.projectModel },
|
||||||
|
@ -42,6 +49,7 @@ describe('ProjectOptionsHandler', function () {
|
||||||
{ imageName: 'texlive-1234.5', imageDesc: 'test image 1' },
|
{ imageName: 'texlive-1234.5', imageDesc: 'test image 1' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
'../../infrastructure/mongodb': { db: this.db, ObjectId },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -181,6 +189,28 @@ describe('ProjectOptionsHandler', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('setting the rangesSupportEnabled', function () {
|
||||||
|
it('should perform and update on mongo', async function () {
|
||||||
|
await this.handler.promises.enableHistoryRangesSupport(projectId)
|
||||||
|
sinon.assert.calledWith(
|
||||||
|
this.db.projects.updateOne,
|
||||||
|
{ _id: new ObjectId(projectId) },
|
||||||
|
{ $set: { 'overleaf.history.rangesSupportEnabled': true } }
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('when mongo update error occurs', function () {
|
||||||
|
beforeEach(function () {
|
||||||
|
this.db.projects.updateOne = sinon.stub().yields('error')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should be rejected', async function () {
|
||||||
|
expect(this.handler.promises.enableHistoryRangesSupport(projectId)).to
|
||||||
|
.be.rejected
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('unsetting the brandVariationId', function () {
|
describe('unsetting the brandVariationId', function () {
|
||||||
it('should perform and update on mongo', async function () {
|
it('should perform and update on mongo', async function () {
|
||||||
await this.handler.promises.unsetBrandVariationId(projectId)
|
await this.handler.promises.unsetBrandVariationId(projectId)
|
||||||
|
|
Loading…
Reference in a new issue