Add an endpoint to remove a notification by its key alone

This commit is contained in:
Shane Kilkelly 2016-08-11 10:01:21 +01:00
parent 197ee9f4d9
commit fc78bfe86c
5 changed files with 51 additions and 14 deletions

View file

@ -24,6 +24,7 @@ app.post '/user/:user_id', controller.addNotification
app.get '/user/:user_id', controller.getUserNotifications
app.del '/user/:user_id/notification/:notification_id', controller.removeNotificationId
app.del '/user/:user_id', controller.removeNotificationKey
app.del '/notification/key/:key', controller.removeNotificationByKeyOnly
app.get '/status', (req, res)->
res.send('notifications sharelatex up')

View file

@ -44,3 +44,10 @@ module.exports =
updateOperation =
"$unset": {templateKey:true}
db.notifications.update searchOps, updateOperation, callback
removeNotificationByKeyOnly: (notification_key, callback)->
searchOps =
key: notification_key
updateOperation =
"$unset": {templateKey:true}
db.notifications.update searchOps, updateOperation, callback

View file

@ -30,3 +30,10 @@ module.exports =
metrics.inc "removeNotificationKey"
Notifications.removeNotificationKey req.params.user_id, req.body.key, (err, notifications)->
res.send()
removeNotificationByKeyOnly: (req, res)->
notification_key = req.params.key
logger.log {notification_key}, "mark notification as read by key only"
metrics.inc "removeNotificationKey"
Notifications.removeNotificationByKeyOnly notification_key, (err, notifications)->
res.send()

View file

@ -64,3 +64,13 @@ describe 'Notifications Controller', ->
@controller.removeNotificationKey req, send:(result)=>
@notifications.removeNotificationKey.calledWith(user_id, notification_key).should.equal true
done()
describe "removeNotificationByKeyOnly", ->
it "should tell the notifications to mark the notification Key as read", (done)->
@notifications.removeNotificationByKeyOnly = sinon.stub().callsArgWith(1)
req =
params:
key: notification_key
@controller.removeNotificationByKeyOnly req, send:(result)=>
@notifications.removeNotificationByKeyOnly.calledWith(notification_key).should.equal true
done()

View file

@ -85,3 +85,15 @@ describe 'Notifications Tests', ->
"$unset": {templateKey:true}
@updateStub.calledWith(searchOps, updateOperation).should.equal true
done()
describe 'removeNotificationByKeyOnly', ->
it 'should mark the notification key as read', (done)->
@updateStub.callsArgWith(2, null)
@notifications.removeNotificationByKeyOnly notification_key, (err)=>
searchOps =
key: notification_key
updateOperation =
"$unset": {templateKey:true}
@updateStub.calledWith(searchOps, updateOperation).should.equal true
done()