DraftModeManagerTests.coffee 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. SandboxedModule = require('sandboxed-module')
  2. sinon = require('sinon')
  3. require('chai').should()
  4. modulePath = require('path').join __dirname, '../../../app/js/DraftModeManager'
  5. describe 'DraftModeManager', ->
  6. beforeEach ->
  7. @DraftModeManager = SandboxedModule.require modulePath, requires:
  8. "fs": @fs = {}
  9. "logger-sharelatex": @logger = {log: () ->}
  10. describe "_injectDraftOption", ->
  11. it "should add draft option into documentclass with existing options", ->
  12. @DraftModeManager
  13. ._injectDraftOption('''
  14. \\documentclass[a4paper,foo=bar]{article}
  15. ''')
  16. .should.equal('''
  17. \\documentclass[draft,a4paper,foo=bar]{article}
  18. ''')
  19. it "should add draft option into documentclass with no options", ->
  20. @DraftModeManager
  21. ._injectDraftOption('''
  22. \\documentclass{article}
  23. ''')
  24. .should.equal('''
  25. \\documentclass[draft]{article}
  26. ''')
  27. describe "injectDraftMode", ->
  28. beforeEach ->
  29. @filename = "/mock/filename.tex"
  30. @callback = sinon.stub()
  31. content = '''
  32. \\documentclass{article}
  33. \\begin{document}
  34. Hello world
  35. \\end{document}
  36. '''
  37. @fs.readFile = sinon.stub().callsArgWith(2, null, content)
  38. @fs.writeFile = sinon.stub().callsArg(2)
  39. @DraftModeManager.injectDraftMode @filename, @callback
  40. it "should read the file", ->
  41. @fs.readFile
  42. .calledWith(@filename, "utf8")
  43. .should.equal true
  44. it "should write the modified file", ->
  45. @fs.writeFile
  46. .calledWith(@filename, """
  47. \\documentclass[draft]{article}
  48. \\begin{document}
  49. Hello world
  50. \\end{document}
  51. """)
  52. .should.equal true
  53. it "should call the callback", ->
  54. @callback.called.should.equal true