overleaf/services/web/test/unit/src/Notifications/NotificationsControllerTests.js

67 lines
1.9 KiB
JavaScript
Raw Normal View History

const SandboxedModule = require('sandboxed-module')
const sinon = require('sinon')
const modulePath = require('path').join(
__dirname,
'../../../../app/src/Features/Notifications/NotificationsController.js'
)
describe('NotificationsController', function () {
const userId = '123nd3ijdks'
const notificationId = '123njdskj9jlk'
beforeEach(function () {
this.handler = {
getUserNotifications: sinon.stub().callsArgWith(1),
markAsRead: sinon.stub().callsArgWith(2),
}
this.req = {
params: {
notificationId,
},
session: {
user: {
_id: userId,
},
},
i18n: {
translate() {},
},
}
this.AuthenticationController = {
getLoggedInUserId: sinon.stub().returns(this.req.session.user._id),
}
this.controller = SandboxedModule.require(modulePath, {
requires: {
'./NotificationsHandler': this.handler,
'../Authentication/AuthenticationController': this
.AuthenticationController,
},
})
})
it('should ask the handler for all unread notifications', function (done) {
const allNotifications = [{ _id: notificationId, user_id: userId }]
this.handler.getUserNotifications = sinon
.stub()
.callsArgWith(1, null, allNotifications)
this.controller.getAllUnreadNotifications(this.req, {
send: body => {
body.should.deep.equal(allNotifications)
this.handler.getUserNotifications.calledWith(userId).should.equal(true)
done()
},
})
})
it('should send a delete request when a delete has been received to mark a notification', function (done) {
this.controller.markNotificationAsRead(this.req, {
sendStatus: () => {
this.handler.markAsRead
.calledWith(userId, notificationId)
.should.equal(true)
done()
},
})
})
})