overleaf/services/filestore/test/unit/js/ImageOptimiserTests.js

60 lines
1.6 KiB
JavaScript
Raw Normal View History

const sinon = require('sinon')
const chai = require('chai')
const { expect } = chai
const modulePath = '../../../app/js/ImageOptimiser.js'
2019-12-19 11:56:03 -05:00
const { FailedCommandError } = require('../../../app/js/Errors')
const SandboxedModule = require('sandboxed-module')
2014-02-14 11:39:05 -05:00
describe('ImageOptimiser', function() {
2019-12-19 11:56:03 -05:00
let ImageOptimiser, SafeExec
const sourcePath = '/wombat/potato.eps'
beforeEach(function() {
2019-12-19 11:56:03 -05:00
SafeExec = {
promises: sinon.stub().resolves()
}
ImageOptimiser = SandboxedModule.require(modulePath, {
requires: {
2019-12-19 11:56:03 -05:00
'./SafeExec': SafeExec,
'logger-sharelatex': {
log() {},
err() {},
warn() {}
2019-12-19 11:56:03 -05:00
}
}
})
})
2014-02-14 11:39:05 -05:00
describe('compressPng', function() {
2019-12-19 11:56:03 -05:00
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()
})
})
2014-02-14 11:39:05 -05:00
2019-12-19 11:56:03 -05:00
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()
})
})
})
2014-02-14 11:39:05 -05:00
2019-12-19 11:56:03 -05:00
describe('when optimiser is sigkilled', function() {
it('should not produce an error', function(done) {
2019-12-19 11:56:03 -05:00
const error = new FailedCommandError('', 'SIGKILL', '', '')
SafeExec.promises.rejects(error)
ImageOptimiser.compressPng(sourcePath, err => {
expect(err).not.to.exist
done()
})
2019-12-19 11:56:03 -05:00
})
})
})