| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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
- })
- })
- })
|