| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const sinon = require('sinon')
- const chai = require('chai')
- const { expect } = chai
- const modulePath = '../../../app/js/ImageOptimiser.js'
- const { FailedCommandError } = require('../../../app/js/Errors')
- const SandboxedModule = require('sandboxed-module')
- describe('ImageOptimiser', function () {
- let ImageOptimiser, SafeExec, logger
- const sourcePath = '/wombat/potato.eps'
- beforeEach(function () {
- SafeExec = {
- promises: sinon.stub().resolves(),
- }
- logger = {
- warn: sinon.stub(),
- }
- ImageOptimiser = SandboxedModule.require(modulePath, {
- requires: {
- './SafeExec': SafeExec,
- '@overleaf/logger': logger,
- '@overleaf/metrics': {
- Timer: sinon.stub().returns({ done: sinon.stub() }),
- },
- },
- })
- })
- describe('compressPng', function () {
- it('should convert the file', function (done) {
- ImageOptimiser.compressPng(sourcePath, err => {
- expect(err).not.to.exist
- expect(SafeExec.promises).to.have.been.calledWith([
- 'optipng',
- sourcePath,
- ])
- done()
- })
- })
- it('should return the error', function (done) {
- SafeExec.promises.rejects('wombat herding failure')
- ImageOptimiser.compressPng(sourcePath, err => {
- expect(err.toString()).to.equal('wombat herding failure')
- done()
- })
- })
- })
- describe('when optimiser is sigkilled', function () {
- const expectedError = new FailedCommandError('', 'SIGKILL', '', '')
- let error
- beforeEach(function (done) {
- SafeExec.promises.rejects(expectedError)
- ImageOptimiser.compressPng(sourcePath, err => {
- error = err
- done()
- })
- })
- it('should not produce an error', function () {
- expect(error).not.to.exist
- })
- it('should log a warning', function () {
- expect(logger.warn).to.have.been.calledOnce
- })
- })
- })
|