/* 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 { assert } = require("chai"); const sinon = require('sinon'); const chai = require('chai'); const should = chai.should(); const { expect } = chai; const modulePath = "../../../app/js/LocalFileWriter.js"; const SandboxedModule = require('sandboxed-module'); describe("LocalFileWriter", function() { beforeEach(function() { this.writeStream = { on(type, cb){ if (type === "finish") { return cb(); } } }; this.readStream = {on() {}}; this.fs = { createWriteStream : sinon.stub().returns(this.writeStream), createReadStream: sinon.stub().returns(this.readStream), unlink: sinon.stub() }; this.settings = { path: { uploadFolder:"somewhere" } }; this.writer = SandboxedModule.require(modulePath, { requires: { "fs": this.fs, "logger-sharelatex": { log() {}, err() {} }, "settings-sharelatex":this.settings, "metrics-sharelatex": { inc() {}, Timer() { return {done() {}}; } } } } ); return this.stubbedFsPath = "something/uploads/eio2k1j3"; }); describe("writeStrem", function() { beforeEach(function() { return this.writer._getPath = sinon.stub().returns(this.stubbedFsPath); }); it("write the stream to ./uploads", function(done){ const stream = { pipe: dest=> { dest.should.equal(this.writeStream); return done(); }, on() {} }; return this.writer.writeStream(stream, null, ()=> {}); }); return it("should send the path in the callback", function(done){ const stream = { pipe: dest=> {}, on(type, cb){ if (type === "end") { return cb(); } } }; return this.writer.writeStream(stream, null, (err, fsPath)=> { fsPath.should.equal(this.stubbedFsPath); return done(); }); }); }); describe("getStream", function() { it("should read the stream from the file ", function(done){ return this.writer.getStream(this.stubbedFsPath, (err, stream)=> { this.fs.createReadStream.calledWith(this.stubbedFsPath).should.equal(true); return done(); }); }); return it("should send the stream in the callback", function(done){ return this.writer.getStream(this.stubbedFsPath, (err, readStream)=> { readStream.should.equal(this.readStream); return done(); }); }); }); return describe("delete file", () => it("should unlink the file", function(done){ const error = "my error"; this.fs.unlink.callsArgWith(1, error); return this.writer.deleteFile(this.stubbedFsPath, err=> { this.fs.unlink.calledWith(this.stubbedFsPath).should.equal(true); err.should.equal(error); return done(); }); })); });