ProjectOptionsHandlerTests.coffee 3.8 KB

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