overleaf/services/clsi/test/unit/js/LockManagerTests.js

84 lines
2.5 KiB
JavaScript
Raw Normal View History

/* eslint-disable
no-return-assign,
no-unused-vars,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
const SandboxedModule = require('sandboxed-module');
const sinon = require('sinon');
require('chai').should();
const modulePath = require('path').join(__dirname, '../../../app/js/LockManager');
const Path = require("path");
const Errors = require("../../../app/js/Errors");
describe("DockerLockManager", function() {
beforeEach(function() {
this.LockManager = SandboxedModule.require(modulePath, { requires: {
"settings-sharelatex": {},
"logger-sharelatex": (this.logger = { log: sinon.stub(), error: sinon.stub(), err() {} }),
"fs": {
lstat:sinon.stub().callsArgWith(1),
2018-08-22 19:12:05 -04:00
readdir: sinon.stub().callsArgWith(1)
},
"lockfile": (this.Lockfile = {})
}
});
return this.lockFile = "/local/compile/directory/.project-lock";
});
return describe("runWithLock", function() {
beforeEach(function() {
this.runner = sinon.stub().callsArgWith(0, null, "foo", "bar");
return this.callback = sinon.stub();
});
describe("normally", function() {
beforeEach(function() {
this.Lockfile.lock = sinon.stub().callsArgWith(2, null);
this.Lockfile.unlock = sinon.stub().callsArgWith(1, null);
return this.LockManager.runWithLock(this.lockFile, this.runner, this.callback);
});
it("should run the compile", function() {
return this.runner
2017-09-22 11:19:33 -04:00
.calledWith()
.should.equal(true);
});
2017-09-22 11:19:33 -04:00
return it("should call the callback with the response from the compile", function() {
return this.callback
2017-09-22 11:19:33 -04:00
.calledWithExactly(null, "foo", "bar")
.should.equal(true);
});
});
return describe("when the project is locked", function() {
beforeEach(function() {
this.error = new Error();
this.error.code = "EEXIST";
this.Lockfile.lock = sinon.stub().callsArgWith(2,this.error);
this.Lockfile.unlock = sinon.stub().callsArgWith(1, null);
return this.LockManager.runWithLock(this.lockFile, this.runner, this.callback);
});
it("should not run the compile", function() {
return this.runner
2017-09-22 11:19:33 -04:00
.called
.should.equal(false);
});
2017-09-22 11:19:33 -04:00
return it("should return an error", function() {
const error = new Errors.AlreadyCompilingError();
return this.callback
2017-09-22 11:19:33 -04:00
.calledWithExactly(error)
.should.equal(true);
});
});
});
});