/* eslint-disable handle-callback-err, 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/OutputFileFinder' ) const path = require('path') const { expect } = require('chai') const { EventEmitter } = require('events') describe('OutputFileFinder', function () { beforeEach(function () { this.OutputFileFinder = SandboxedModule.require(modulePath, { requires: { fs: (this.fs = {}), child_process: { spawn: (this.spawn = sinon.stub()) }, 'logger-sharelatex': { log: sinon.stub(), warn: sinon.stub() } } }) this.directory = '/test/dir' return (this.callback = sinon.stub()) }) describe('findOutputFiles', function () { beforeEach(function () { this.resource_path = 'resource/path.tex' this.output_paths = ['output.pdf', 'extra/file.tex'] this.all_paths = this.output_paths.concat([this.resource_path]) this.resources = [{ path: (this.resource_path = 'resource/path.tex') }] this.OutputFileFinder._getAllFiles = sinon .stub() .callsArgWith(1, null, this.all_paths) return this.OutputFileFinder.findOutputFiles( this.resources, this.directory, (error, outputFiles) => { this.outputFiles = outputFiles } ) }) return it('should only return the output files, not directories or resource paths', function () { return expect(this.outputFiles).to.deep.equal([ { path: 'output.pdf', type: 'pdf' }, { path: 'extra/file.tex', type: 'tex' } ]) }) }) return describe('_getAllFiles', function () { beforeEach(function () { this.proc = new EventEmitter() this.proc.stdout = new EventEmitter() this.proc.stdout.setEncoding = sinon.stub().returns(this.proc.stdout) this.spawn.returns(this.proc) this.directory = '/base/dir' return this.OutputFileFinder._getAllFiles(this.directory, this.callback) }) describe('successfully', function () { beforeEach(function () { this.proc.stdout.emit( 'data', ['/base/dir/main.tex', '/base/dir/chapters/chapter1.tex'].join('\n') + '\n' ) return this.proc.emit('close', 0) }) return it('should call the callback with the relative file paths', function () { return this.callback .calledWith(null, ['main.tex', 'chapters/chapter1.tex']) .should.equal(true) }) }) return describe("when the directory doesn't exist", function () { beforeEach(function () { return this.proc.emit('close', 1) }) return it('should call the callback with a blank array', function () { return this.callback.calledWith(null, []).should.equal(true) }) }) }) })