TemplatesControllerTests.coffee 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. SandboxedModule = require('sandboxed-module')
  2. assert = require('assert')
  3. chai = require('chai')
  4. sinon = require('sinon')
  5. sinonChai = require('sinon-chai')
  6. chai.should()
  7. chai.use(sinonChai)
  8. expect = chai.expect
  9. modulePath = '../../../../app/js/Features/Templates/TemplatesController'
  10. describe "TemplatesController", ->
  11. beforeEach ->
  12. @user_id = "user-id"
  13. @TemplatesController = SandboxedModule.require modulePath, requires:
  14. "../../../js/Features/Authentication/AuthenticationController": @AuthenticationController = {
  15. getLoggedInUserId: sinon.stub().returns(@user_id)
  16. }
  17. "./TemplatesManager": @TemplatesManager = {
  18. createProjectFromV1Template: sinon.stub()
  19. }
  20. @next = sinon.stub()
  21. @req =
  22. body:
  23. brandVariationId: "brand-variation-id"
  24. compiler: "compiler"
  25. mainFile: "main-file"
  26. templateId: "template-id"
  27. templateName: "template-name"
  28. templateVersionId: "template-version-id"
  29. session:
  30. templateData: "template-data"
  31. user: _id: @user_id
  32. @res =
  33. redirect: sinon.stub()
  34. describe "createProjectFromV1Template", ->
  35. describe "on success", ->
  36. beforeEach ->
  37. @project =
  38. _id: "project-id"
  39. @TemplatesManager.createProjectFromV1Template.yields null, @project
  40. @TemplatesController.createProjectFromV1Template @req, @res, @next
  41. it "should call TemplatesManager", ->
  42. @TemplatesManager.createProjectFromV1Template.should.have.been.calledWithMatch "brand-variation-id", "compiler", "main-file", "template-id", "template-name", "template-version-id", "user-id"
  43. it "should redirect to project", ->
  44. @res.redirect.should.have.been.calledWith "/project/project-id"
  45. it "should delete session", ->
  46. expect(@req.session.templateData).to.be.undefined
  47. describe "on error", ->
  48. beforeEach ->
  49. @TemplatesManager.createProjectFromV1Template.yields "error"
  50. @TemplatesController.createProjectFromV1Template @req, @res, @next
  51. it "should call next with error", ->
  52. @next.should.have.been.calledWith "error"
  53. it "should not redirect", ->
  54. @res.redirect.called.should.equal false