Merge pull request #9926 from overleaf/jpa-fallback-lines

[docstore] getAllDocs: ensure returned docs have a lines field

GitOrigin-RevId: 8b1eb7ef7e68e50501442cc6700b3d5cb8d4361f
This commit is contained in:
Jakob Ackermann 2022-10-11 12:33:01 +01:00 committed by Copybot
parent 1a63aacdb7
commit d62e2d99c8
2 changed files with 47 additions and 1 deletions

View file

@ -79,7 +79,14 @@ function getAllDocs(req, res, next) {
if (error) {
return next(error)
}
res.json(_buildDocsArrayView(projectId, docs))
const docViews = _buildDocsArrayView(projectId, docs)
for (const docView of docViews) {
if (!docView.lines) {
logger.warn({ projectId, docId: docView._id }, 'missing doc lines')
docView.lines = []
}
}
res.json(docViews)
}
)
}

View file

@ -198,6 +198,45 @@ describe('HttpController', function () {
})
})
describe('with null lines', function () {
beforeEach(function () {
this.req.params = { project_id: this.projectId }
this.docs = [
{
_id: ObjectId(),
lines: null,
rev: 2,
},
{
_id: ObjectId(),
lines: ['mock', 'lines', 'two'],
rev: 4,
},
]
this.DocManager.getAllNonDeletedDocs = sinon
.stub()
.callsArgWith(2, null, this.docs)
this.HttpController.getAllDocs(this.req, this.res, this.next)
})
it('should return the doc with fallback lines', function () {
this.res.json
.calledWith([
{
_id: this.docs[0]._id.toString(),
lines: [],
rev: this.docs[0].rev,
},
{
_id: this.docs[1]._id.toString(),
lines: this.docs[1].lines,
rev: this.docs[1].rev,
},
])
.should.equal(true)
})
})
describe('with a null doc', function () {
beforeEach(function () {
this.req.params = { project_id: this.projectId }