BlogControllerTests.coffee 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. sinon = require('sinon')
  6. modulePath = path.join __dirname, "../../../../app/js/Features/Blog/BlogController"
  7. expect = require("chai").expect
  8. describe "BlogController", ->
  9. beforeEach ->
  10. @settings =
  11. apis:
  12. blog:
  13. url:"http://blog.sharelatex.env"
  14. @request =
  15. get: sinon.stub()
  16. @ErrorController = {}
  17. @BlogController = SandboxedModule.require modulePath, requires:
  18. "settings-sharelatex":@settings
  19. "logger-sharelatex": log:->
  20. "../Errors/ErrorController": @ErrorController
  21. "request": @request
  22. @req = {}
  23. @res = {}
  24. describe "getPage", ()->
  25. it "should get the data from the blog api", (done)->
  26. @req.url = "/blog/something.html"
  27. body = {"stuff":"here"}
  28. @request.get.callsArgWith(1, null, null, JSON.stringify(body))
  29. @res.render = (view, data)=>
  30. @request.get.calledWith("#{@settings.apis.blog.url}#{@req.url}")
  31. view.should.equal "blog/blog_holder"
  32. assert.deepEqual body, data
  33. done()
  34. @BlogController.getPage @req, @res
  35. it "should send to the error controller if the blog responds 404", (done)->
  36. @req.url = "/blog/something.html"
  37. @request.get.callsArgWith(1, null, {statusCode:404})
  38. @ErrorController.notFound = (req, res)=>
  39. assert.deepEqual req, @req
  40. assert.deepEqual res, @res
  41. done()
  42. @BlogController.getPage @req, @res
  43. it "should proxy the image urls", (done)->
  44. @BlogController._directProxy = sinon.stub()
  45. @req.url = "/something.png"
  46. @BlogController.getPage @req, @res
  47. @BlogController._directProxy.calledWith("#{@settings.apis.blog.url}#{@req.url}", @res).should.equal true
  48. done()
  49. describe "getIndexPage", ->
  50. it "should change the url and send it to getPage", (done)->
  51. @req.url = "/blog"
  52. @BlogController.getPage = (req, res)->
  53. req.url.should.equal "/blog/index.html"
  54. done()
  55. @BlogController.getIndexPage @req, @res