/* eslint-disable no-return-assign, */ // 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/TikzManager'); describe('TikzManager', function() { beforeEach(function() { return this.TikzManager = SandboxedModule.require(modulePath, { requires: { "./ResourceWriter": (this.ResourceWriter = {}), "./SafeReader": (this.SafeReader = {}), "fs": (this.fs = {}), "logger-sharelatex": (this.logger = {log() {}}) } });}); describe("checkMainFile", function() { beforeEach(function() { this.compileDir = "compile-dir"; this.mainFile = "main.tex"; return this.callback = sinon.stub(); }); describe("if there is already an output.tex file in the resources", function() { beforeEach(function() { this.resources = [{path:"main.tex"},{path:"output.tex"}]; return this.TikzManager.checkMainFile(this.compileDir, this.mainFile, this.resources, this.callback); }); return it("should call the callback with false ", function() { return this.callback.calledWithExactly(null, false) .should.equal(true); }); }); return describe("if there is no output.tex file in the resources", function() { beforeEach(function() { this.resources = [{path:"main.tex"}]; return this.ResourceWriter.checkPath = sinon.stub() .withArgs(this.compileDir, this.mainFile) .callsArgWith(2, null, `${this.compileDir}/${this.mainFile}`); }); describe("and the main file contains tikzexternalize", function() { beforeEach(function() { this.SafeReader.readFile = sinon.stub() .withArgs(`${this.compileDir}/${this.mainFile}`) .callsArgWith(3, null, "hello \\tikzexternalize"); return this.TikzManager.checkMainFile(this.compileDir, this.mainFile, this.resources, this.callback); }); it("should look at the file on disk", function() { return this.SafeReader.readFile .calledWith(`${this.compileDir}/${this.mainFile}`) .should.equal(true); }); return it("should call the callback with true ", function() { return this.callback.calledWithExactly(null, true) .should.equal(true); }); }); describe("and the main file does not contain tikzexternalize", function() { beforeEach(function() { this.SafeReader.readFile = sinon.stub() .withArgs(`${this.compileDir}/${this.mainFile}`) .callsArgWith(3, null, "hello"); return this.TikzManager.checkMainFile(this.compileDir, this.mainFile, this.resources, this.callback); }); it("should look at the file on disk", function() { return this.SafeReader.readFile .calledWith(`${this.compileDir}/${this.mainFile}`) .should.equal(true); }); return it("should call the callback with false", function() { return this.callback.calledWithExactly(null, false) .should.equal(true); }); }); return describe("and the main file contains \\usepackage{pstool}", function() { beforeEach(function() { this.SafeReader.readFile = sinon.stub() .withArgs(`${this.compileDir}/${this.mainFile}`) .callsArgWith(3, null, "hello \\usepackage[random-options]{pstool}"); return this.TikzManager.checkMainFile(this.compileDir, this.mainFile, this.resources, this.callback); }); it("should look at the file on disk", function() { return this.SafeReader.readFile .calledWith(`${this.compileDir}/${this.mainFile}`) .should.equal(true); }); return it("should call the callback with true ", function() { return this.callback.calledWithExactly(null, true) .should.equal(true); }); }); }); }); return describe("injectOutputFile", function() { beforeEach(function() { this.rootDir = "/mock"; this.filename = "filename.tex"; this.callback = sinon.stub(); this.content = `\ \\documentclass{article} \\usepackage{tikz} \\tikzexternalize \\begin{document} Hello world \\end{document}\ `; this.fs.readFile = sinon.stub().callsArgWith(2, null, this.content); this.fs.writeFile = sinon.stub().callsArg(3); this.ResourceWriter.checkPath = sinon.stub().callsArgWith(2, null, `${this.rootDir}/${this.filename}`); return this.TikzManager.injectOutputFile(this.rootDir, this.filename, this.callback); }); it("sould check the path", function() { return this.ResourceWriter.checkPath.calledWith(this.rootDir, this.filename) .should.equal(true); }); it("should read the file", function() { return this.fs.readFile .calledWith(`${this.rootDir}/${this.filename}`, "utf8") .should.equal(true); }); it("should write out the same file as output.tex", function() { return this.fs.writeFile .calledWith(`${this.rootDir}/output.tex`, this.content, {flag: 'wx'}) .should.equal(true); }); return it("should call the callback", function() { return this.callback.called.should.equal(true); }); }); });