ImageOptimiserTests.coffee 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. assert = require("chai").assert
  2. sinon = require('sinon')
  3. chai = require('chai')
  4. should = chai.should()
  5. expect = chai.expect
  6. modulePath = "../../../app/js/ImageOptimiser.js"
  7. SandboxedModule = require('sandboxed-module')
  8. describe "ImageOptimiser", ->
  9. beforeEach ->
  10. @fs =
  11. createReadStream:sinon.stub()
  12. createWriteStream:sinon.stub()
  13. rename:sinon.stub()
  14. @pngcrush = class PngCrush
  15. pipe:->
  16. on: ->
  17. @optimiser = SandboxedModule.require modulePath, requires:
  18. "fs":@fs
  19. "pngcrush":@pngcrush
  20. "logger-sharelatex":
  21. log:->
  22. err:->
  23. @sourcePath = "/this/path/here.eps"
  24. @writeStream =
  25. pipe:->
  26. on: (type, cb)->
  27. if type == "finish"
  28. cb()
  29. @sourceStream =
  30. pipe:->
  31. return pipe:->
  32. on:->
  33. @error = "Error"
  34. describe "compressPng", ->
  35. beforeEach ->
  36. @fs.createReadStream.returns(@sourceStream)
  37. @fs.createWriteStream.returns(@writeStream)
  38. @fs.rename.callsArgWith(2)
  39. it "should get the file stream", (done)->
  40. @optimiser.compressPng @sourcePath, (err)=>
  41. @fs.createReadStream.calledWith(@sourcePath).should.equal true
  42. done()
  43. it "should create a compressed file stream", (done)->
  44. @optimiser.compressPng @sourcePath, (err)=>
  45. @fs.createWriteStream.calledWith("#{@sourcePath}-optimised")
  46. done()
  47. it "should rename the file after completion", (done)->
  48. @optimiser.compressPng @sourcePath, (err)=>
  49. @fs.rename.calledWith("#{@sourcePath}-optimised", @sourcePath).should.equal true
  50. done()