NotificationsBuilderTests.coffee 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. SandboxedModule = require('sandboxed-module')
  2. assert = require('chai').assert
  3. require('chai').should()
  4. sinon = require('sinon')
  5. modulePath = require('path').join __dirname, '../../../../app/js/Features/Notifications/NotificationsBuilder.js'
  6. describe 'NotificationsBuilder', ->
  7. user_id = "123nd3ijdks"
  8. beforeEach ->
  9. @handler =
  10. createNotification: sinon.stub().callsArgWith(6)
  11. @settings = apis: { v1: { url: 'v1.url', user: '', pass: '' } }
  12. @body = {id: 1, name: 'stanford', enrolment_ad_html: 'v1 ad content'}
  13. response = {statusCode: 200}
  14. @request = sinon.stub().returns(@stubResponse).callsArgWith(1, null, response, @body)
  15. @controller = SandboxedModule.require modulePath, requires:
  16. "./NotificationsHandler":@handler
  17. "settings-sharelatex":@settings
  18. 'request': @request
  19. "logger-sharelatex":
  20. log:->
  21. err:->
  22. it 'should call v1 and create affiliation notifications', (done)->
  23. ip = '192.168.0.1'
  24. @controller.ipMatcherAffiliation(user_id, ip).create (callback)=>
  25. @request.calledOnce.should.equal true
  26. expectedOpts =
  27. university_id: @body.id
  28. university_name: @body.name
  29. content: @body.enrolment_ad_html
  30. @handler.createNotification.calledWith(
  31. user_id,
  32. "ip-matched-affiliation-#{ip}",
  33. "notification_ip_matched_affiliation",
  34. expectedOpts
  35. ).should.equal true
  36. done()