TemplatesControllerTests.coffee 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. sinon = require('sinon')
  6. modulePath = '../../../../app/js/Features/Templates/TemplatesController'
  7. describe 'TemplatesController', ->
  8. project_id = "213432"
  9. beforeEach ->
  10. @request = sinon.stub()
  11. @request.returns {
  12. pipe:->
  13. on:->
  14. }
  15. @fs = {
  16. unlink : sinon.stub()
  17. createWriteStream : sinon.stub().returns(on:(_, cb)->cb())
  18. }
  19. @ProjectUploadManager = {createProjectFromZipArchive : sinon.stub().callsArgWith(3, null, {_id:project_id})}
  20. @dumpFolder = "dump/path"
  21. @ProjectOptionsHandler = {
  22. setCompiler:sinon.stub().callsArgWith(2)
  23. setImageName:sinon.stub().callsArgWith(2)
  24. }
  25. @uuid = "1234"
  26. @ProjectRootDocManager = {
  27. setRootDocFromName: sinon.stub().callsArgWith(2)
  28. }
  29. @ProjectDetailsHandler =
  30. getProjectDescription:sinon.stub()
  31. fixProjectName: sinon.stub().returns(@templateName)
  32. @Project =
  33. update: sinon.stub().callsArgWith(3, null)
  34. @controller = SandboxedModule.require modulePath, requires:
  35. '../../../js/Features/Uploads/ProjectUploadManager':@ProjectUploadManager
  36. '../../../js/Features/Project/ProjectOptionsHandler':@ProjectOptionsHandler
  37. '../../../js/Features/Project/ProjectRootDocManager':@ProjectRootDocManager
  38. '../../../js/Features/Project/ProjectDetailsHandler':@ProjectDetailsHandler
  39. '../../../js/Features/Authentication/AuthenticationController': @AuthenticationController = {getLoggedInUserId: sinon.stub()}
  40. './TemplatesPublisher':@TemplatesPublisher
  41. "logger-sharelatex":
  42. log:->
  43. err:->
  44. "settings-sharelatex":
  45. path:
  46. dumpFolder:@dumpFolder
  47. siteUrl: @siteUrl = "http://localhost:3000"
  48. apis:
  49. v1:
  50. url: @v1Url="http://overleaf.com"
  51. user: "sharelatex"
  52. pass: "password"
  53. overleaf:
  54. host: @v1Url
  55. "uuid":v4:=>@uuid
  56. "request": @request
  57. "fs":@fs
  58. "../../../js/models/Project": {Project: @Project}
  59. @zipUrl = "%2Ftemplates%2F52fb86a81ae1e566597a25f6%2Fv%2F4%2Fzip&templateName=Moderncv%20Banking&compiler=pdflatex"
  60. @templateName = "project name here"
  61. @user_id = "1234"
  62. @req =
  63. session:
  64. user: _id:@user_id
  65. templateData:
  66. zipUrl: @zipUrl
  67. templateName: @templateName
  68. @redirect = {}
  69. @AuthenticationController.getLoggedInUserId.returns(@user_id)
  70. describe 'v1Templates', ->
  71. it "should fetch zip from v1 based on template id", (done)->
  72. @templateVersionId = 15
  73. @req.body = {templateVersionId: @templateVersionId}
  74. redirect = =>
  75. @request.calledWith("#{@v1Url}/api/v1/sharelatex/templates/#{@templateVersionId}").should.equal true
  76. done()
  77. res = redirect:redirect
  78. @controller.createProjectFromV1Template @req, res