From 156c417df0921eb9ea57d9e0663b434302401aeb Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 26 Jun 2018 11:26:07 +0100 Subject: [PATCH 1/2] Don't consider current features when assignin bonus --- .../Features/Referal/ReferalFeatures.coffee | 16 +--------------- .../coffee/FeatureUpdaterTests.coffee | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee b/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee index 34651ef1f5..4b2d0baa85 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 Settings.defaultFeatures _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' From b902821c07cb90a92ec0e6704bd4aea43061aa4f Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 6 Jul 2018 09:09:41 +0100 Subject: [PATCH 2/2] Return blank features, not default features if no bonuses --- services/web/app/coffee/Features/Referal/ReferalFeatures.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee b/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee index 4b2d0baa85..0980f06222 100644 --- a/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee +++ b/services/web/app/coffee/Features/Referal/ReferalFeatures.coffee @@ -18,7 +18,7 @@ module.exports = ReferalFeatures = _calculateFeatures : (user)-> bonusLevel = ReferalFeatures._getBonusLevel(user) - return Settings.bonus_features?["#{bonusLevel}"] or Settings.defaultFeatures + return Settings.bonus_features?["#{bonusLevel}"] or {} _getBonusLevel: (user)-> highestBonusLevel = 0