ProjectOptionsHandlerTests.coffee 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. sinon = require('sinon')
  2. chai = require('chai')
  3. should = chai.should()
  4. modulePath = "../../../../app/js/Features/Project/ProjectOptionsHandler.js"
  5. SandboxedModule = require('sandboxed-module')
  6. describe 'ProjectOptionsHandler', ->
  7. project_id = "4eecaffcbffa66588e000008"
  8. beforeEach ->
  9. @projectModel = class Project
  10. constructor:(options)->
  11. @projectModel.update = sinon.spy()
  12. @handler = SandboxedModule.require modulePath, requires:
  13. '../../models/Project':{Project:@projectModel}
  14. 'settings-sharelatex':
  15. languages:[
  16. {name: "English", code: "en"}
  17. {name: "French", code: "fr"}
  18. ]
  19. imageRoot: "docker-repo/subdir"
  20. allowedImageNames: [
  21. {imageName: "texlive-0000.0", imageDesc: "test image 0"}
  22. {imageName: "texlive-1234.5", imageDesc: "test image 1"}
  23. ]
  24. 'logger-sharelatex':
  25. log:->
  26. err:->
  27. describe 'Setting the compiler', ->
  28. it 'should perform and update on mongo', (done)->
  29. @handler.setCompiler project_id, "xeLaTeX", (err)=>
  30. args = @projectModel.update.args[0]
  31. args[0]._id.should.equal project_id
  32. args[1].compiler.should.equal "xelatex"
  33. done()
  34. @projectModel.update.args[0][3]()
  35. it 'should not perform and update on mongo if it is not a reconised compiler', (done)->
  36. @handler.setCompiler project_id, "something", (err)=>
  37. @projectModel.update.called.should.equal false
  38. done()
  39. describe 'Setting the imageName', ->
  40. it 'should perform and update on mongo', (done)->
  41. @handler.setImageName project_id, "texlive-1234.5", (err)=>
  42. args = @projectModel.update.args[0]
  43. args[0]._id.should.equal project_id
  44. args[1].imageName.should.equal "docker-repo/subdir/texlive-1234.5"
  45. done()
  46. @projectModel.update.args[0][3]()
  47. it 'should not perform and update on mongo if it is not a reconised compiler', (done)->
  48. @handler.setImageName project_id, "something", (err)=>
  49. @projectModel.update.called.should.equal false
  50. done()
  51. describe "setting the spellCheckLanguage", ->
  52. it 'should perform and update on mongo', (done)->
  53. @handler.setSpellCheckLanguage project_id, "fr", (err)=>
  54. args = @projectModel.update.args[0]
  55. args[0]._id.should.equal project_id
  56. args[1].spellCheckLanguage.should.equal "fr"
  57. done()
  58. @projectModel.update.args[0][3]()
  59. it 'should not perform and update on mongo if it is not a reconised compiler', (done)->
  60. @handler.setSpellCheckLanguage project_id, "no a lang", (err)=>
  61. @projectModel.update.called.should.equal false
  62. done()
  63. it 'should perform and update on mongo if the language is blank (means turn it off)', (done)->
  64. @handler.setSpellCheckLanguage project_id, "", (err)=>
  65. @projectModel.update.called.should.equal true
  66. done()
  67. @projectModel.update.args[0][3]()
  68. describe "setting the brandVariationId", ->
  69. it 'should perform and update on mongo', (done)->
  70. @handler.setBrandVariationId project_id, "123", (err)=>
  71. args = @projectModel.update.args[0]
  72. args[0]._id.should.equal project_id
  73. args[1].brandVariationId.should.equal "123"
  74. done()
  75. @projectModel.update.args[0][3]()
  76. it 'should not perform and update on mongo if there is no brand variation', (done)->
  77. @handler.setBrandVariationId project_id, null, (err)=>
  78. @projectModel.update.called.should.equal false
  79. done()
  80. it 'should not perform and update on mongo if brand variation is an empty string', (done)->
  81. @handler.setBrandVariationId project_id, "", (err)=>
  82. @projectModel.update.called.should.equal false
  83. done()