overleaf/services/docstore/test/acceptance/coffee/GettingDocsTests.js

83 lines
No EOL
2.8 KiB
JavaScript

/*
* decaffeinate suggestions:
* 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 chai = require("chai");
chai.should();
const {ObjectId} = require("mongojs");
const DocstoreApp = require("./helpers/DocstoreApp");
const DocstoreClient = require("./helpers/DocstoreClient");
describe("Getting a doc", function() {
beforeEach(function(done) {
this.project_id = ObjectId();
this.doc_id = ObjectId();
this.lines = ["original", "lines"];
this.version = 42;
this.ranges = {
changes: [{
id: ObjectId().toString(),
op: { i: "foo", p: 3 },
meta: {
user_id: ObjectId().toString(),
ts: new Date().toString()
}
}]
};
return DocstoreApp.ensureRunning(() => {
return DocstoreClient.createDoc(this.project_id, this.doc_id, this.lines, this.version, this.ranges, error => {
if (error != null) { throw error; }
return done();
});
});
});
describe("when the doc exists", () => it("should get the doc lines and version", function(done) {
return DocstoreClient.getDoc(this.project_id, this.doc_id, {}, (error, res, doc) => {
doc.lines.should.deep.equal(this.lines);
doc.version.should.equal(this.version);
doc.ranges.should.deep.equal(this.ranges);
return done();
});
}));
describe("when the doc does not exist", () => it("should return a 404", function(done) {
const missing_doc_id = ObjectId();
return DocstoreClient.getDoc(this.project_id, missing_doc_id, {}, function(error, res, doc) {
res.statusCode.should.equal(404);
return done();
});
}));
return describe("when the doc is a deleted doc", function() {
beforeEach(function(done) {
this.deleted_doc_id = ObjectId();
return DocstoreClient.createDoc(this.project_id, this.deleted_doc_id, this.lines, this.version, this.ranges, error => {
if (error != null) { throw error; }
return DocstoreClient.deleteDoc(this.project_id, this.deleted_doc_id, done);
});
});
it("should return the doc", function(done) {
return DocstoreClient.getDoc(this.project_id, this.deleted_doc_id, {include_deleted:true},(error, res, doc) => {
doc.lines.should.deep.equal(this.lines);
doc.version.should.equal(this.version);
doc.ranges.should.deep.equal(this.ranges);
doc.deleted.should.equal(true);
return done();
});
});
return it("should return a 404 when the query string is not set", function(done){
return DocstoreClient.getDoc(this.project_id, this.deleted_doc_id, {},(error, res, doc) => {
res.statusCode.should.equal(404);
return done();
});
});
});
});