| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- SandboxedModule = require('sandboxed-module')
- assert = require('chai').assert
- require('chai').should()
- sinon = require('sinon')
- modulePath = require('path').join __dirname, '../../../../app/js/Features/Notifications/NotificationsHandler.js'
- _ = require('underscore')
- describe 'NotificationsHandler', ->
- user_id = "123nd3ijdks"
- notification_id = "123njdskj9jlk"
- notificationUrl = "notification.sharelatex.testing"
- beforeEach ->
- @request = sinon.stub().callsArgWith(1)
- @handler = SandboxedModule.require modulePath, requires:
- "settings-sharelatex": apis:{notifications:{url:notificationUrl}}
- "request":@request
- 'logger-sharelatex':
- log:->
- err:->
- describe "getUserNotifications", ->
- it 'should get unread notifications', (done)->
- stubbedNotifications = [{_id: notification_id, user_id: user_id}]
- @request.callsArgWith(1, null, {statusCode:200}, stubbedNotifications)
- @handler.getUserNotifications user_id, (err, unreadNotifications)=>
- stubbedNotifications.should.deep.equal unreadNotifications
- getOpts =
- uri: "#{notificationUrl}/user/#{user_id}"
- json:true
- timeout:1000
- method: "GET"
- @request.calledWith(getOpts).should.equal true
- done()
- it 'should return empty arrays if there are no notifications', ->
- @request.callsArgWith(1, null, {statusCode:200}, null)
- @handler.getUserNotifications user_id, (err, unreadNotifications)=>
- unreadNotifications.length.should.equal 0
- describe "markAsRead", ->
- beforeEach ->
- @key = "some key here"
- it 'should send a delete request when a delete has been received to mark a notification', (done)->
- @handler.markAsReadWithKey user_id, @key, =>
- opts =
- uri: "#{notificationUrl}/user/#{user_id}"
- json:
- key:@key
- timeout:1000
- method: "DELETE"
- @request.calledWith(opts).should.equal true
- done()
- describe "createNotification", ->
- beforeEach ->
- @key = "some key here"
- @messageOpts = {value:12344}
- @templateKey = "renderThisHtml"
- @expiry = null
- it "should post the message over", (done)->
- @handler.createNotification user_id, @key, @templateKey, @messageOpts, @expiry, =>
- args = @request.args[0][0]
- args.uri.should.equal "#{notificationUrl}/user/#{user_id}"
- args.timeout.should.equal 1000
- expectedJson = {key:@key, templateKey:@templateKey, messageOpts:@messageOpts, forceCreate:true}
- assert.deepEqual(args.json, expectedJson)
- done()
- describe 'when expiry date is supplied', ->
- beforeEach ->
- @key = "some key here"
- @messageOpts = {value:12344}
- @templateKey = "renderThisHtml"
- @expiry = new Date()
- it 'should post the message over with expiry field', (done) ->
- @handler.createNotification user_id, @key, @templateKey, @messageOpts, @expiry, =>
- args = @request.args[0][0]
- args.uri.should.equal "#{notificationUrl}/user/#{user_id}"
- args.timeout.should.equal 1000
- expectedJson = {key:@key, templateKey:@templateKey, messageOpts:@messageOpts, expires: @expiry, forceCreate:true}
- assert.deepEqual(args.json, expectedJson)
- done()
-
- describe "markAsReadByKeyOnly", ->
- beforeEach ->
- @key = "some key here"
- it 'should send a delete request when a delete has been received to mark a notification', (done)->
- @handler.markAsReadByKeyOnly @key, =>
- opts =
- uri: "#{notificationUrl}/key/#{@key}"
- timeout:1000
- method: "DELETE"
- @request.calledWith(opts).should.equal true
- done()
|