SandboxedModule = require('sandboxed-module') assert = require('assert') require('chai').should() sinon = require('sinon') modulePath = require('path').join __dirname, '../../../../app/js/Features/Referal/ReferalFeatures.js' describe 'ReferalFeatures', -> beforeEach -> @ReferalFeatures = SandboxedModule.require modulePath, requires: '../../models/User': User: @User = {} "settings-sharelatex": @Settings = {} 'logger-sharelatex': log:-> err:-> @callback = sinon.stub() @referal_id = "referal-id-123" @referal_medium = "twitter" @user_id = "user-id-123" @new_user_id = "new-user-id-123" describe "getBonusFeatures", -> beforeEach -> @refered_user_count = 3 @Settings.bonus_features = "3": collaborators: 3 dropbox: false versioning: false stubbedUser = { refered_user_count: @refered_user_count, features:{collaborators:1, dropbox:false, versioning:false} } @User.findOne = sinon.stub().callsArgWith 1, null, stubbedUser @ReferalFeatures.getBonusFeatures @user_id, @callback it "should get the users number of refered user", -> @User.findOne .calledWith(_id: @user_id) .should.equal true it "should call the callback with the features", -> @callback.calledWith(null, @Settings.bonus_features[3]).should.equal true describe "when the user is not at a bonus level", -> beforeEach -> @refered_user_count = 0 @Settings.bonus_features = "1": collaborators: 3 dropbox: false versioning: false @User.findOne = sinon.stub().callsArgWith 1, null, { refered_user_count: @refered_user_count } @ReferalFeatures.getBonusFeatures @user_id, @callback it "should get the users number of refered user", -> @User.findOne .calledWith(_id: @user_id) .should.equal true it "should call the callback with no features", -> @callback.calledWith(null, {}).should.equal true