diff --git a/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee b/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee index 34651ef1f5..0980f06222 100644 --- a/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee +++ b/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee @@ -18,21 +18,7 @@ module.exports = ReferalFeatures = _calculateFeatures : (user)-> bonusLevel = ReferalFeatures._getBonusLevel(user) - currentFeatures = _.clone(user.features) #need to clone because we exend with underscore later - betterBonusFeatures = {} - _.each Settings.bonus_features["#{bonusLevel}"], (bonusLevel, key)-> - currentLevel = user?.features?[key] - if _.isBoolean(currentLevel) and currentLevel == false - betterBonusFeatures[key] = bonusLevel - - if _.isNumber(currentLevel) - if currentLevel == -1 - return - bonusIsGreaterThanCurrent = currentLevel < bonusLevel - if bonusIsGreaterThanCurrent or bonusLevel == -1 - betterBonusFeatures[key] = bonusLevel - newFeatures = _.extend(currentFeatures, betterBonusFeatures) - return newFeatures + return Settings.bonus_features?["#{bonusLevel}"] or {} _getBonusLevel: (user)-> highestBonusLevel = 0 diff --git a/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee b/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee index 5bc3026fff..7c6c106fe2 100644 --- a/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee +++ b/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee @@ -83,6 +83,23 @@ describe "FeatureUpdater.refreshFeatures", -> )) done() + describe "when the user is due bonus features and has extra features that no longer apply", -> + beforeEach -> + User.update { + _id: @user._id + }, { + refered_user_count: 10, + 'features.github': true + } # returns a promise + + it "should set their features to the bonus set and downgrade the extras", (done) -> + syncUserAndGetFeatures @user, (error, features) => + throw error if error? + expect(features).to.deep.equal(Object.assign( + {}, settings.defaultFeatures, settings.bonus_features[9] + )) + done() + describe "when the user has a v1 plan", -> beforeEach -> MockV1Api.setUser 42, plan_name: 'free'