93b7274ea6
GitOrigin-RevId: 03bd4db8cddc548706439edd7f6db0bc3e7ed9d3
88 lines
2.4 KiB
JavaScript
88 lines
2.4 KiB
JavaScript
import { vi, expect } from 'vitest'
|
|
import sinon from 'sinon'
|
|
import path from 'node:path'
|
|
const modulePath = path.join(
|
|
import.meta.dirname,
|
|
'../../../../app/src/Features/Referal/ReferalFeatures.mjs'
|
|
)
|
|
|
|
describe('ReferalFeatures', function () {
|
|
beforeEach(async function (ctx) {
|
|
vi.doMock('../../../../app/src/models/User', () => ({
|
|
User: (ctx.User = {}),
|
|
}))
|
|
|
|
vi.doMock('@overleaf/settings', () => ({
|
|
default: (ctx.Settings = {}),
|
|
}))
|
|
|
|
ctx.ReferalFeatures = (await import(modulePath)).default
|
|
ctx.referal_id = 'referal-id-123'
|
|
ctx.referal_medium = 'twitter'
|
|
ctx.user_id = 'user-id-123'
|
|
ctx.new_user_id = 'new-user-id-123'
|
|
})
|
|
|
|
describe('getBonusFeatures', function () {
|
|
beforeEach(async function (ctx) {
|
|
ctx.refered_user_count = 3
|
|
ctx.Settings.bonus_features = {
|
|
3: {
|
|
collaborators: 3,
|
|
dropbox: false,
|
|
versioning: false,
|
|
},
|
|
}
|
|
const stubbedUser = {
|
|
refered_user_count: ctx.refered_user_count,
|
|
features: { collaborators: 1, dropbox: false, versioning: false },
|
|
}
|
|
|
|
ctx.User.findOne = sinon.stub().returns({
|
|
exec: sinon.stub().resolves(stubbedUser),
|
|
})
|
|
ctx.features = await ctx.ReferalFeatures.promises.getBonusFeatures(
|
|
ctx.user_id
|
|
)
|
|
})
|
|
|
|
it('should get the users number of refered user', function (ctx) {
|
|
ctx.User.findOne.calledWith({ _id: ctx.user_id }).should.equal(true)
|
|
})
|
|
|
|
it('should return the features', function (ctx) {
|
|
expect(ctx.features).to.equal(ctx.Settings.bonus_features[3])
|
|
})
|
|
})
|
|
|
|
describe('when the user is not at a bonus level', function () {
|
|
beforeEach(async function (ctx) {
|
|
ctx.refered_user_count = 0
|
|
ctx.Settings.bonus_features = {
|
|
1: {
|
|
collaborators: 3,
|
|
dropbox: false,
|
|
versioning: false,
|
|
},
|
|
}
|
|
ctx.User.findOne = sinon.stub().returns({
|
|
exec: sinon
|
|
.stub()
|
|
.resolves({ refered_user_count: ctx.refered_user_count }),
|
|
})
|
|
|
|
ctx.features = await ctx.ReferalFeatures.promises.getBonusFeatures(
|
|
ctx.user_id
|
|
)
|
|
})
|
|
|
|
it('should get the users number of refered user', function (ctx) {
|
|
ctx.User.findOne.calledWith({ _id: ctx.user_id }).should.equal(true)
|
|
})
|
|
|
|
it('should return an empty feature set', function (ctx) {
|
|
expect(ctx.features).to.be.empty
|
|
})
|
|
})
|
|
})
|