overleaf/services/clsi/test/unit/coffee/OutputFileOptimiserTests.js

142 lines
5.1 KiB
JavaScript
Raw Normal View History

/*
* 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/OutputFileOptimiser');
const path = require("path");
const { expect } = require("chai");
const { EventEmitter } = require("events");
describe("OutputFileOptimiser", function() {
beforeEach(function() {
this.OutputFileOptimiser = SandboxedModule.require(modulePath, { requires: {
"fs": (this.fs = {}),
"path": (this.Path = {}),
"child_process": { spawn: (this.spawn = sinon.stub())
},
"logger-sharelatex": { log: sinon.stub(), warn: sinon.stub() },
"./Metrics" : {}
}
});
this.directory = "/test/dir";
return this.callback = sinon.stub();
});
describe("optimiseFile", function() {
beforeEach(function() {
this.src = "./output.pdf";
return this.dst = "./output.pdf";
});
describe("when the file is not a pdf file", function() {
beforeEach(function(done){
this.src = "./output.log";
this.OutputFileOptimiser.checkIfPDFIsOptimised = sinon.stub().callsArgWith(1, null, false);
this.OutputFileOptimiser.optimisePDF = sinon.stub().callsArgWith(2, null);
return this.OutputFileOptimiser.optimiseFile(this.src, this.dst, done);
});
it("should not check if the file is optimised", function() {
return this.OutputFileOptimiser.checkIfPDFIsOptimised.calledWith(this.src).should.equal(false);
});
return it("should not optimise the file", function() {
return this.OutputFileOptimiser.optimisePDF.calledWith(this.src, this.dst).should.equal(false);
});
});
describe("when the pdf file is not optimised", function() {
beforeEach(function(done) {
this.OutputFileOptimiser.checkIfPDFIsOptimised = sinon.stub().callsArgWith(1, null, false);
this.OutputFileOptimiser.optimisePDF = sinon.stub().callsArgWith(2, null);
return this.OutputFileOptimiser.optimiseFile(this.src, this.dst, done);
});
it("should check if the pdf is optimised", function() {
return this.OutputFileOptimiser.checkIfPDFIsOptimised.calledWith(this.src).should.equal(true);
});
return it("should optimise the pdf", function() {
return this.OutputFileOptimiser.optimisePDF.calledWith(this.src, this.dst).should.equal(true);
});
});
return describe("when the pdf file is optimised", function() {
beforeEach(function(done) {
this.OutputFileOptimiser.checkIfPDFIsOptimised = sinon.stub().callsArgWith(1, null, true);
this.OutputFileOptimiser.optimisePDF = sinon.stub().callsArgWith(2, null);
return this.OutputFileOptimiser.optimiseFile(this.src, this.dst, done);
});
it("should check if the pdf is optimised", function() {
return this.OutputFileOptimiser.checkIfPDFIsOptimised.calledWith(this.src).should.equal(true);
});
return it("should not optimise the pdf", function() {
return this.OutputFileOptimiser.optimisePDF.calledWith(this.src, this.dst).should.equal(false);
});
});
});
return describe("checkIfPDFISOptimised", function() {
beforeEach(function() {
this.callback = sinon.stub();
this.fd = 1234;
this.fs.open = sinon.stub().yields(null, this.fd);
this.fs.read = sinon.stub().withArgs(this.fd).yields(null, 100, new Buffer("hello /Linearized 1"));
this.fs.close = sinon.stub().withArgs(this.fd).yields(null);
return this.OutputFileOptimiser.checkIfPDFIsOptimised(this.src, this.callback);
});
describe("for a linearised file", function() {
beforeEach(function() {
this.fs.read = sinon.stub().withArgs(this.fd).yields(null, 100, new Buffer("hello /Linearized 1"));
return this.OutputFileOptimiser.checkIfPDFIsOptimised(this.src, this.callback);
});
it("should open the file", function() {
return this.fs.open.calledWith(this.src, "r").should.equal(true);
});
it("should read the header", function() {
return this.fs.read.calledWith(this.fd).should.equal(true);
});
it("should close the file", function() {
return this.fs.close.calledWith(this.fd).should.equal(true);
});
return it("should call the callback with a true result", function() {
return this.callback.calledWith(null, true).should.equal(true);
});
});
return describe("for an unlinearised file", function() {
beforeEach(function() {
this.fs.read = sinon.stub().withArgs(this.fd).yields(null, 100, new Buffer("hello not linearized 1"));
return this.OutputFileOptimiser.checkIfPDFIsOptimised(this.src, this.callback);
});
it("should open the file", function() {
return this.fs.open.calledWith(this.src, "r").should.equal(true);
});
it("should read the header", function() {
return this.fs.read.calledWith(this.fd).should.equal(true);
});
it("should close the file", function() {
return this.fs.close.calledWith(this.fd).should.equal(true);
});
return it("should call the callback with a false result", function() {
return this.callback.calledWith(null, false).should.equal(true);
});
});
});
});