diff --git a/services/web/app/coffee/Features/Referal/ReferalAllocator.coffee b/services/web/app/coffee/Features/Referal/ReferalAllocator.coffee index 43349b9b1e..0ea66e62b7 100644 --- a/services/web/app/coffee/Features/Referal/ReferalAllocator.coffee +++ b/services/web/app/coffee/Features/Referal/ReferalAllocator.coffee @@ -32,27 +32,15 @@ module.exports = ReferalAllocator = assignBonus: (user_id, callback = (error) ->) -> - SubscriptionLocator.getUsersSubscription user_id, (error, subscription) -> - return callback(error) if error? - logger.log - subscription: subscription, - user_id: user_id, - "checking user doesn't have a subsciption before assigning bonus" - if !subscription? or !subscription.planCode? - query = _id: user_id - User.findOne query, (error, user) -> - return callback(error) if error - return callback(new Error("user not found")) if !user? - logger.log - user_id: user_id, - refered_user_count: user.refered_user_count, - "assigning bonus" - if user.refered_user_count? and user.refered_user_count > 0 - newFeatures = ReferalAllocator._calculateBonuses(user) - User.update query, { $set: features: newFeatures }, callback + query = _id: user_id + User.findOne query, (error, user) -> + return callback(error) if error + return callback(new Error("user not found")) if !user? + logger.log user_id: user_id, refered_user_count: user.refered_user_count, "assigning bonus" + if user.refered_user_count? and user.refered_user_count > 0 + newFeatures = ReferalAllocator._calculateBonuses(user) + User.update query, { $set: features: newFeatures }, callback - else - callback() else callback() diff --git a/services/web/test/UnitTests/coffee/Referal/ReferalAllocatorTests.coffee b/services/web/test/UnitTests/coffee/Referal/ReferalAllocatorTests.coffee index 28592f70bf..1ca8b46d9a 100644 --- a/services/web/test/UnitTests/coffee/Referal/ReferalAllocatorTests.coffee +++ b/services/web/test/UnitTests/coffee/Referal/ReferalAllocatorTests.coffee @@ -4,7 +4,7 @@ require('chai').should() sinon = require('sinon') modulePath = require('path').join __dirname, '../../../../app/js/Features/Referal/ReferalAllocator.js' -describe 'Referal allocator', -> +describe 'Referalallocator', -> beforeEach -> @ReferalAllocator = SandboxedModule.require modulePath, requires: @@ -75,7 +75,6 @@ describe 'Referal allocator', -> @callback.called.should.equal true describe "assignBonus", -> - describe "when user does not have a subscription", -> beforeEach -> @refered_user_count = 3 @Settings.bonus_features = @@ -90,14 +89,8 @@ describe 'Referal allocator', -> @User.findOne = sinon.stub().callsArgWith 1, null,stubbedUser @User.update = sinon.stub().callsArgWith 2, null - @SubscriptionLocator.getUsersSubscription = sinon.stub().callsArgWith 1, null, null @ReferalAllocator.assignBonus @user_id, @callback - it "should get the users subscription", -> - @SubscriptionLocator.getUsersSubscription - .calledWith(@user_id) - .should.equal true - it "should get the users number of refered user", -> @User.findOne .calledWith(_id: @user_id) @@ -116,52 +109,7 @@ describe 'Referal allocator', -> it "should call the callback", -> @callback.called.should.equal true - - describe "when user does not have a recurlySubscription_id", -> - beforeEach -> - @refered_user_count = 4 - @Settings.bonus_features = - "2": - collaborators: 2 - dropbox: false - versioning: false - "5": - collaborators: 5 - dropbox: true - versioning: false - "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 - @User.update = sinon.stub().callsArgWith 2, null - @SubscriptionLocator.getUsersSubscription = sinon.stub().callsArgWith 1, null, {} - @ReferalAllocator.assignBonus @user_id, @callback - - it "should get the users subscription", -> - @SubscriptionLocator.getUsersSubscription - .calledWith(@user_id) - .should.equal true - - it "should get the users number of refered user", -> - @User.findOne - .calledWith(_id: @user_id) - .should.equal true - - it "should update the user to bonus features with the closest level", -> - @User.update - .calledWith({ - _id: @user_id - }, { - $set: - features: - @Settings.bonus_features["3"] - }) - .should.equal true - - it "should call the callback", -> - @callback.called.should.equal true + describe "when the user has better features already", -> @@ -181,7 +129,6 @@ describe 'Referal allocator', -> @User.findOne = sinon.stub().callsArgWith 1, null, @stubbedUser @User.update = sinon.stub().callsArgWith 2, null - @SubscriptionLocator.getUsersSubscription = sinon.stub().callsArgWith 1, null,null it "should not set in in mongo when the feature is better", (done)-> @ReferalAllocator.assignBonus @user_id, => @@ -204,14 +151,8 @@ describe 'Referal allocator', -> versioning: false @User.findOne = sinon.stub().callsArgWith 1, null, { refered_user_count: @refered_user_count } @User.update = sinon.stub().callsArgWith 2, null - @SubscriptionLocator.getUsersSubscription = sinon.stub().callsArgWith 1, null, {} @ReferalAllocator.assignBonus @user_id, @callback - it "should get the users subscription", -> - @SubscriptionLocator.getUsersSubscription - .calledWith(@user_id) - .should.equal true - it "should get the users number of refered user", -> @User.findOne .calledWith(_id: @user_id) @@ -223,29 +164,4 @@ describe 'Referal allocator', -> it "should call the callback", -> @callback.called.should.equal true - describe "when user has a subscription", -> - beforeEach -> - @refered_user_count = 3 - @Settings.bonus_features = - "3": - collaborators: 3 - dropbox: false - versioning: false - @User.findOne = sinon.stub().callsArgWith 1, null, { refered_user_count: @refered_user_count } - @User.update = sinon.stub().callsArgWith 2, null - @SubscriptionLocator.getUsersSubscription = sinon.stub().callsArgWith 1, null, { planCode: "collaborator" } - @ReferalAllocator.assignBonus @user_id, @callback - it "should get the users subscription", -> - @SubscriptionLocator.getUsersSubscription - .calledWith(@user_id) - .should.equal true - - it "should not get the users number of refered user", -> - @User.findOne.called.should.equal false - - it "should not update the user to bonus features", -> - @User.update.called.should.equal false - - it "should call the callback", -> - @callback.called.should.equal true