diff --git a/test/client-old/spec/controllers/userCtrlSpec.js b/test/client-old/spec/controllers/userCtrlSpec.js new file mode 100644 index 0000000000..2ac2dbe8e1 --- /dev/null +++ b/test/client-old/spec/controllers/userCtrlSpec.js @@ -0,0 +1,69 @@ +'use strict'; + +describe('User Controller', function() { + var $rootScope, $window, User, shared, scope, ctrl, content; + + beforeEach(function() { + module(function ($provide) { + var user = specHelper.newUser(); + User = {user: user} + $provide.value('Guide', sandbox.stub()); + $provide.value('User', User); + $provide.value('Achievement', sandbox.stub()); + $provide.value('Social', sandbox.stub()); + $provide.value('Shared', { + achievements: { + getAchievementsForProfile: sandbox.stub() + }, + shops: { + getBackgroundShopSets: sandbox.stub() + } + }); + $provide.value('Content', { + loginIncentives: sandbox.stub() + }) + }); + + inject(function($rootScope, $controller, User, Content) { + scope = $rootScope.$new(); + content = Content; + $controller('RootCtrl', { $scope: scope, User: User}); + ctrl = $controller('UserCtrl', { $scope: scope, User: User, $window: $window}); + }); + }); + + describe('getProgressDisplay', function() { + + beforeEach(() => { + sandbox.stub(window.env, 't'); + window.env.t.onFirstCall().returns('Progress until next'); + }); + + it('should return initial progress', function() { + scope.profile.loginIncentives = 0; + content.loginIncentives = [{ + nextRewardAt: 1, + reward: true + }]; + var actual = scope.getProgressDisplay(); + expect(actual.trim()).to.eql('Progress until next 0/1'); + }); + + it('should return progress between next reward and current reward', function() { + scope.profile.loginIncentives = 1; + content.loginIncentives = [{ + nextRewardAt: 1, + reward: true + }, { + prevRewardAt: 0, + nextRewardAt: 2, + reward: true + }, { + prevRewardAt: 1, + nextRewardAt: 3 + }]; + var actual = scope.getProgressDisplay(); + expect(actual.trim()).to.eql('Progress until next 0/1'); + }); + }); +}); diff --git a/website/client-old/js/controllers/userCtrl.js b/website/client-old/js/controllers/userCtrl.js index f233f366cd..a109db178b 100644 --- a/website/client-old/js/controllers/userCtrl.js +++ b/website/client-old/js/controllers/userCtrl.js @@ -1,6 +1,6 @@ "use strict"; -habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$http', '$state', 'Guide', 'Shared', 'Content', 'Stats', 'Social', 'Costume', +habitrpg.controller('UserCtrl', ['$rootScope', '$scope', '$location', 'User', '$http', '$state', 'Guide', 'Shared', 'Content', 'Stats', 'Social', 'Costume', function($rootScope, $scope, $location, User, $http, $state, Guide, Shared, Content, Stats, Social, Costume) { $scope.profile = User.user; @@ -102,6 +102,8 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$ if (!currentLoginDay) return env.t('moreIncentivesComingSoon'); var nextRewardAt = currentLoginDay.nextRewardAt; if (!nextRewardAt) return env.t('moreIncentivesComingSoon'); + // if we are on a reward day, let's show progress relative to this + if (currentLoginDay.reward) currentLoginDay.prevRewardKey = $scope.profile.loginIncentives; if (!currentLoginDay.prevRewardKey) currentLoginDay.prevRewardKey = 0; return env.t('checkinProgressTitle') + ' ' + ($scope.profile.loginIncentives - currentLoginDay.prevRewardKey) + '/' + (nextRewardAt - currentLoginDay.prevRewardKey); }; diff --git a/website/common/script/content/loginIncentives.js b/website/common/script/content/loginIncentives.js index 10bd714174..c5ff8e6da7 100644 --- a/website/common/script/content/loginIncentives.js +++ b/website/common/script/content/loginIncentives.js @@ -226,7 +226,7 @@ module.exports = function getLoginIncentives (api) { }, }; - // Add refence link to next reward and add filler days so we have a map to refernce the next reward from any day + // Add reference link to next reward and add filler days so we have a map to reference the next reward from any day // We could also, use a list, but then we would be cloning each of the rewards. // Create a new array if we want the loginIncentives to be immutable in the future let nextRewardKey;