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

83 lines
2.4 KiB
JavaScript

/*
* 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 chai = require("chai");
chai.should();
const {ObjectId} = require("mongojs");
const async = require("async");
const DocstoreApp = require("./helpers/DocstoreApp");
const DocstoreClient = require("./helpers/DocstoreClient");
describe("Getting all docs", function() {
beforeEach(function(done) {
this.project_id = ObjectId();
this.docs = [{
_id: ObjectId(),
lines: ["one", "two", "three"],
ranges: {"mock": "one"},
rev: 2
}, {
_id: ObjectId(),
lines: ["aaa", "bbb", "ccc"],
ranges: {"mock": "two"},
rev: 4
}, {
_id: ObjectId(),
lines: ["111", "222", "333"],
ranges: {"mock": "three"},
rev: 6
}];
this.deleted_doc = {
_id: ObjectId(),
lines: ["deleted"],
ranges: {"mock": "four"},
rev: 8
};
const version = 42;
const jobs = Array.from(this.docs).map((doc) =>
(doc => {
return callback => {
return DocstoreClient.createDoc(this.project_id, doc._id, doc.lines, version, doc.ranges, callback);
};
})(doc));
jobs.push(cb => {
return DocstoreClient.createDoc(this.project_id, this.deleted_doc._id, this.deleted_doc.lines, version, this.deleted_doc.ranges, err=> {
return DocstoreClient.deleteDoc(this.project_id, this.deleted_doc._id, cb);
});
});
jobs.unshift(cb => DocstoreApp.ensureRunning(cb));
return async.series(jobs, done);
});
it("getAllDocs should return all the (non-deleted) docs", function(done) {
return DocstoreClient.getAllDocs(this.project_id, (error, res, docs) => {
if (error != null) { throw error; }
docs.length.should.equal(this.docs.length);
for (let i = 0; i < docs.length; i++) {
const doc = docs[i];
doc.lines.should.deep.equal(this.docs[i].lines);
}
return done();
});
});
return it("getAllRanges should return all the (non-deleted) doc ranges", function(done) {
return DocstoreClient.getAllRanges(this.project_id, (error, res, docs) => {
if (error != null) { throw error; }
docs.length.should.equal(this.docs.length);
for (let i = 0; i < docs.length; i++) {
const doc = docs[i];
doc.ranges.should.deep.equal(this.docs[i].ranges);
}
return done();
});
});
});