mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
Add an endpoint to remove a notification by its key alone
This commit is contained in:
parent
197ee9f4d9
commit
fc78bfe86c
5 changed files with 51 additions and 14 deletions
|
@ -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')
|
||||
|
|
|
@ -22,7 +22,7 @@ module.exports =
|
|||
logger.log number:number, user_id:user_id, key:notification.key, "alredy has notification key for user"
|
||||
callback number
|
||||
else
|
||||
doc =
|
||||
doc =
|
||||
user_id: ObjectId(user_id)
|
||||
key: notification.key
|
||||
messageOpts: notification.messageOpts
|
||||
|
@ -30,17 +30,24 @@ module.exports =
|
|||
db.notifications.insert(doc, callback)
|
||||
|
||||
removeNotificationId: (user_id, notification_id, callback)->
|
||||
searchOps =
|
||||
searchOps =
|
||||
user_id:ObjectId(user_id)
|
||||
_id:ObjectId(notification_id)
|
||||
updateOperation =
|
||||
updateOperation =
|
||||
"$unset": {templateKey:true, messageOpts: true}
|
||||
db.notifications.update searchOps, updateOperation, callback
|
||||
|
||||
removeNotificationKey: (user_id, notification_key, callback)->
|
||||
searchOps =
|
||||
searchOps =
|
||||
user_id:ObjectId(user_id)
|
||||
key: notification_key
|
||||
updateOperation =
|
||||
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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -24,7 +24,7 @@ describe 'Notifications Controller', ->
|
|||
describe "getUserNotifications", ->
|
||||
it 'should ask the notifications for the users notifications', (done)->
|
||||
@notifications.getUserNotifications = sinon.stub().callsArgWith(1, null, @stubbedNotification)
|
||||
req =
|
||||
req =
|
||||
params:
|
||||
user_id: user_id
|
||||
@controller.getUserNotifications req, json:(result)=>
|
||||
|
@ -35,7 +35,7 @@ describe 'Notifications Controller', ->
|
|||
describe "addNotification", ->
|
||||
it "should tell the notifications to add the notification for the user", (done)->
|
||||
@notifications.addNotification = sinon.stub().callsArgWith(2)
|
||||
req =
|
||||
req =
|
||||
params:
|
||||
user_id: user_id
|
||||
body: @stubbedNotification
|
||||
|
@ -46,7 +46,7 @@ describe 'Notifications Controller', ->
|
|||
describe "removeNotificationId", ->
|
||||
it "should tell the notifications to mark the notification Id as read", (done)->
|
||||
@notifications.removeNotificationId = sinon.stub().callsArgWith(2)
|
||||
req =
|
||||
req =
|
||||
params:
|
||||
user_id: user_id
|
||||
notification_id: notification_id
|
||||
|
@ -57,10 +57,20 @@ describe 'Notifications Controller', ->
|
|||
describe "removeNotificationKey", ->
|
||||
it "should tell the notifications to mark the notification Key as read", (done)->
|
||||
@notifications.removeNotificationKey = sinon.stub().callsArgWith(2)
|
||||
req =
|
||||
req =
|
||||
params:
|
||||
user_id: user_id
|
||||
body: {key: notification_key}
|
||||
@controller.removeNotificationKey req, send:(result)=>
|
||||
@notifications.removeNotificationKey.calledWith(user_id, notification_key).should.equal true
|
||||
done()
|
||||
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()
|
||||
|
|
|
@ -65,10 +65,10 @@ describe 'Notifications Tests', ->
|
|||
@updateStub.callsArgWith(2, null)
|
||||
|
||||
@notifications.removeNotificationId user_id, notification_id, (err)=>
|
||||
searchOps =
|
||||
searchOps =
|
||||
user_id:ObjectId(user_id)
|
||||
_id:ObjectId(notification_id)
|
||||
updateOperation =
|
||||
updateOperation =
|
||||
"$unset": {templateKey:true, messageOpts:true}
|
||||
@updateStub.calledWith(searchOps, updateOperation).should.equal true
|
||||
done()
|
||||
|
@ -78,10 +78,22 @@ describe 'Notifications Tests', ->
|
|||
@updateStub.callsArgWith(2, null)
|
||||
|
||||
@notifications.removeNotificationKey user_id, notification_key, (err)=>
|
||||
searchOps =
|
||||
searchOps =
|
||||
user_id:ObjectId(user_id)
|
||||
key: notification_key
|
||||
updateOperation =
|
||||
updateOperation =
|
||||
"$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()
|
||||
|
|
Loading…
Reference in a new issue