Files
overleaf-cep/services/web/test/unit/src/BetaProgram/BetaProgramHandlerTests.js
Alf Eaton 1ebc8a79cb Merge pull request #3495 from overleaf/ae-prettier-2
Upgrade Prettier to v2

GitOrigin-RevId: 85aa3fa1acb6332c4f58c46165a43d1a51471f33
2021-04-15 02:05:22 +00:00

110 lines
2.6 KiB
JavaScript

const SandboxedModule = require('sandboxed-module')
const path = require('path')
const modulePath = path.join(
__dirname,
'../../../../app/src/Features/BetaProgram/BetaProgramHandler'
)
const sinon = require('sinon')
const { expect } = require('chai')
describe('BetaProgramHandler', function () {
beforeEach(function () {
this.user_id = 'some_id'
this.user = {
_id: this.user_id,
email: 'user@example.com',
features: {},
betaProgram: false,
save: sinon.stub().callsArgWith(0, null)
}
this.handler = SandboxedModule.require(modulePath, {
requires: {
'@overleaf/metrics': {
inc: sinon.stub()
},
'../User/UserUpdater': (this.UserUpdater = {
promises: {
updateUser: sinon.stub().resolves()
}
})
}
})
})
describe('optIn', function () {
beforeEach(function () {
this.user.betaProgram = false
this.call = callback => {
this.handler.optIn(this.user_id, callback)
}
})
it('should call userUpdater', function (done) {
this.call(err => {
expect(err).to.not.exist
this.UserUpdater.promises.updateUser.callCount.should.equal(1)
done()
})
})
it('should not produce an error', function (done) {
this.call(err => {
expect(err).to.not.exist
done()
})
})
describe('when userUpdater produces an error', function () {
beforeEach(function () {
this.UserUpdater.promises.updateUser.rejects()
})
it('should produce an error', function (done) {
this.call(err => {
expect(err).to.exist
expect(err).to.be.instanceof(Error)
done()
})
})
})
})
describe('optOut', function () {
beforeEach(function () {
this.user.betaProgram = true
this.call = callback => {
this.handler.optOut(this.user_id, callback)
}
})
it('should call userUpdater', function (done) {
this.call(err => {
expect(err).to.not.exist
this.UserUpdater.promises.updateUser.callCount.should.equal(1)
done()
})
})
it('should not produce an error', function (done) {
this.call(err => {
expect(err).to.not.exist
done()
})
})
describe('when userUpdater produces an error', function () {
beforeEach(function () {
this.UserUpdater.promises.updateUser.rejects()
})
it('should produce an error', function (done) {
this.call(err => {
expect(err).to.exist
expect(err).to.be.instanceof(Error)
done()
})
})
})
})
})