mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 19:23:49 -05:00
4d70bd664f
These changes were previously merged, not deployed, and reverted. This reverts the revert. This reverts commit a6b8c6c658b33b6eee78b8b99e43308f32211ae2, reversing changes made to 93c98921372eed4244d22fce800716cb27eca299.
171 lines
5.1 KiB
JavaScript
171 lines
5.1 KiB
JavaScript
/* eslint-disable
|
|
handle-callback-err,
|
|
no-unused-vars,
|
|
*/
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
// Fix any style issues and re-enable lint.
|
|
/*
|
|
* decaffeinate suggestions:
|
|
* DS101: Remove unnecessary use of Array.from
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
* DS207: Consider shorter variations of null checks
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
*/
|
|
const sinon = require('sinon')
|
|
const { expect } = require('chai')
|
|
|
|
const MockWebApi = require('./helpers/MockWebApi')
|
|
const DocUpdaterClient = require('./helpers/DocUpdaterClient')
|
|
const DocUpdaterApp = require('./helpers/DocUpdaterApp')
|
|
|
|
describe('Getting documents for project', function () {
|
|
before(function (done) {
|
|
this.lines = ['one', 'two', 'three']
|
|
this.version = 42
|
|
return DocUpdaterApp.ensureRunning(done)
|
|
})
|
|
|
|
describe('when project state hash does not match', function () {
|
|
before(function (done) {
|
|
this.projectStateHash = DocUpdaterClient.randomId()
|
|
;[this.project_id, this.doc_id] = Array.from([
|
|
DocUpdaterClient.randomId(),
|
|
DocUpdaterClient.randomId()
|
|
])
|
|
|
|
MockWebApi.insertDoc(this.project_id, this.doc_id, {
|
|
lines: this.lines,
|
|
version: this.version
|
|
})
|
|
return DocUpdaterClient.preloadDoc(
|
|
this.project_id,
|
|
this.doc_id,
|
|
(error) => {
|
|
if (error != null) {
|
|
throw error
|
|
}
|
|
return DocUpdaterClient.getProjectDocs(
|
|
this.project_id,
|
|
this.projectStateHash,
|
|
(error, res, returnedDocs) => {
|
|
this.res = res
|
|
this.returnedDocs = returnedDocs
|
|
return done()
|
|
}
|
|
)
|
|
}
|
|
)
|
|
})
|
|
|
|
return it('should return a 409 Conflict response', function () {
|
|
return this.res.statusCode.should.equal(409)
|
|
})
|
|
})
|
|
|
|
describe('when project state hash matches', function () {
|
|
before(function (done) {
|
|
this.projectStateHash = DocUpdaterClient.randomId()
|
|
;[this.project_id, this.doc_id] = Array.from([
|
|
DocUpdaterClient.randomId(),
|
|
DocUpdaterClient.randomId()
|
|
])
|
|
|
|
MockWebApi.insertDoc(this.project_id, this.doc_id, {
|
|
lines: this.lines,
|
|
version: this.version
|
|
})
|
|
return DocUpdaterClient.preloadDoc(
|
|
this.project_id,
|
|
this.doc_id,
|
|
(error) => {
|
|
if (error != null) {
|
|
throw error
|
|
}
|
|
return DocUpdaterClient.getProjectDocs(
|
|
this.project_id,
|
|
this.projectStateHash,
|
|
(error, res0, returnedDocs0) => {
|
|
// set the hash
|
|
this.res0 = res0
|
|
this.returnedDocs0 = returnedDocs0
|
|
return DocUpdaterClient.getProjectDocs(
|
|
this.project_id,
|
|
this.projectStateHash,
|
|
(error, res, returnedDocs) => {
|
|
// the hash should now match
|
|
this.res = res
|
|
this.returnedDocs = returnedDocs
|
|
return done()
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|
|
)
|
|
})
|
|
|
|
it('should return a 200 response', function () {
|
|
return this.res.statusCode.should.equal(200)
|
|
})
|
|
|
|
return it('should return the documents', function () {
|
|
return this.returnedDocs.should.deep.equal([
|
|
{ _id: this.doc_id, lines: this.lines, v: this.version }
|
|
])
|
|
})
|
|
})
|
|
|
|
return describe('when the doc has been removed', function () {
|
|
before(function (done) {
|
|
this.projectStateHash = DocUpdaterClient.randomId()
|
|
;[this.project_id, this.doc_id] = Array.from([
|
|
DocUpdaterClient.randomId(),
|
|
DocUpdaterClient.randomId()
|
|
])
|
|
|
|
MockWebApi.insertDoc(this.project_id, this.doc_id, {
|
|
lines: this.lines,
|
|
version: this.version
|
|
})
|
|
return DocUpdaterClient.preloadDoc(
|
|
this.project_id,
|
|
this.doc_id,
|
|
(error) => {
|
|
if (error != null) {
|
|
throw error
|
|
}
|
|
return DocUpdaterClient.getProjectDocs(
|
|
this.project_id,
|
|
this.projectStateHash,
|
|
(error, res0, returnedDocs0) => {
|
|
// set the hash
|
|
this.res0 = res0
|
|
this.returnedDocs0 = returnedDocs0
|
|
return DocUpdaterClient.deleteDoc(
|
|
this.project_id,
|
|
this.doc_id,
|
|
(error, res, body) => {
|
|
// delete the doc
|
|
return DocUpdaterClient.getProjectDocs(
|
|
this.project_id,
|
|
this.projectStateHash,
|
|
(error, res1, returnedDocs) => {
|
|
// the hash would match, but the doc has been deleted
|
|
this.res = res1
|
|
this.returnedDocs = returnedDocs
|
|
return done()
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|
|
)
|
|
})
|
|
|
|
return it('should return a 409 Conflict response', function () {
|
|
return this.res.statusCode.should.equal(409)
|
|
})
|
|
})
|
|
})
|