BrandVariationsHandlerTests.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. expect = require("chai").expect
  2. SandboxedModule = require("sandboxed-module")
  3. assert = require("assert")
  4. path = require("path")
  5. sinon = require("sinon")
  6. expect = require("chai").expect
  7. modulePath = path.join __dirname, "../../../../app/js/Features/BrandVariations/BrandVariationsHandler"
  8. describe "BrandVariationsHandler", ->
  9. beforeEach ->
  10. @settings =
  11. apis:
  12. v1:
  13. url: "http://overleaf.example.com"
  14. @logger =
  15. err: ->
  16. log: ->
  17. @V1Api =
  18. request: sinon.stub()
  19. @BrandVariationsHandler = SandboxedModule.require modulePath, requires:
  20. "settings-sharelatex": @settings
  21. "logger-sharelatex": @logger
  22. "../V1/V1Api": @V1Api
  23. @mockedBrandVariationDetails =
  24. id: "12"
  25. active: true
  26. brand_name: "The journal"
  27. logo_url: "http://my.cdn.tld/journal-logo.png"
  28. journal_cover_url: "http://my.cdn.tld/journal-cover.jpg"
  29. home_url: "http://www.thejournal.com/"
  30. publish_menu_link_html: "Submit your paper to the <em>The Journal</em>"
  31. describe "getBrandVariationById", ->
  32. it "should call the callback with an error when the branding variation id is not provided", (done) ->
  33. @BrandVariationsHandler.getBrandVariationById null, (err, brandVariationDetails) =>
  34. expect(err).to.be.instanceof Error
  35. done()
  36. it "should call the callback with an error when the request errors", (done) ->
  37. @V1Api.request.callsArgWith 1, new Error()
  38. @BrandVariationsHandler.getBrandVariationById "12", (err, brandVariationDetails) =>
  39. expect(err).to.be.instanceof Error
  40. done()
  41. it "should call the callback with branding details when request succeeds", (done) ->
  42. @V1Api.request.callsArgWith 1, null, { statusCode: 200 }, @mockedBrandVariationDetails
  43. @BrandVariationsHandler.getBrandVariationById "12", (err, brandVariationDetails) =>
  44. expect(err).to.not.exist
  45. expect(brandVariationDetails).to.deep.equal @mockedBrandVariationDetails
  46. done()
  47. it "should transform relative URLs in v1 absolute ones", (done) ->
  48. @mockedBrandVariationDetails.logo_url = "/journal-logo.png"
  49. @V1Api.request.callsArgWith 1, null, { statusCode: 200 }, @mockedBrandVariationDetails
  50. @BrandVariationsHandler.getBrandVariationById "12", (err, brandVariationDetails) =>
  51. expect(brandVariationDetails.logo_url.startsWith(@settings.apis.v1.url)).to.be.true
  52. done()