From 6aae668b8c0e8e8eca2c1e6a607de0c1e5dd6835 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Fri, 24 Jul 2015 17:15:37 -0500 Subject: [PATCH] Rework gem adjustment so it actually makes sense --- test/spec/controllers/challengesCtrlSpec.js | 33 +++++++++++++++++-- .../public/js/controllers/challengesCtrl.js | 12 +++---- website/views/options/social/challenges.jade | 16 ++++----- 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/test/spec/controllers/challengesCtrlSpec.js b/test/spec/controllers/challengesCtrlSpec.js index b23b349cd1..e2072651a6 100644 --- a/test/spec/controllers/challengesCtrlSpec.js +++ b/test/spec/controllers/challengesCtrlSpec.js @@ -471,14 +471,41 @@ describe('Challenges Controller', function() { expect(chal.timestamp).to.be.greaterThan(0); expect(chal.official).to.eql(false); }); + }); + describe('insufficientGemsForTavernChallenge', function() { context('tavern challenge', function() { - it('sets isTavernChallengeAndUserCannotProvidePrize to false if user has no gems'); - it('sets isTavernChallengeAndUserCannotProvidePrize to true if user has at least one gem'); + it('returns true if user has no gems', function() { + User.user.balance = 0; + scope.newChallenge = specHelper.newChallenge({ + group: 'habitrpg' + }); + + var cannotCreateTavernChallenge = scope.insufficientGemsForTavernChallenge(); + expect(cannotCreateTavernChallenge).to.eql(true); + }); + + it('returns false if user has gems', function() { + User.user.balance = .25; + scope.newChallenge = specHelper.newChallenge({ + group: 'habitrpg' + }); + + var cannotCreateTavernChallenge = scope.insufficientGemsForTavernChallenge(); + expect(cannotCreateTavernChallenge).to.eql(false); + }); }); context('non-tavern challenge', function() { - it('sets isTavernChallengeAndUserCannotProvidePrize to false'); + it('returns false', function() { + User.user.balance = 0; + scope.newChallenge = specHelper.newChallenge({ + group: 'not-tavern' + }); + + var cannotCreateTavernChallenge = scope.insufficientGemsForTavernChallenge(); + expect(cannotCreateTavernChallenge).to.eql(false); + }); }); }); diff --git a/website/public/js/controllers/challengesCtrl.js b/website/public/js/controllers/challengesCtrl.js index a64bb49527..8c1d2e8d37 100644 --- a/website/public/js/controllers/challengesCtrl.js +++ b/website/public/js/controllers/challengesCtrl.js @@ -1,5 +1,3 @@ -"use strict"; - habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', 'Challenges', 'Notification', '$compile', 'Groups', '$state', '$stateParams', 'Tasks', function($rootScope, $scope, Shared, User, Challenges, Notification, $compile, Groups, $state, $stateParams, Tasks) { @@ -68,7 +66,6 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', }); _calculateMaxPrize(defaultGroup); - _checkIfUserHasEnoughGemsForTavernChallenge(); }; /** @@ -282,7 +279,6 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', $scope.$watch('newChallenge.group', function(gid){ if (!gid) return; - _checkIfUserHasEnoughGemsForTavernChallenge(); _calculateMaxPrize(gid); if (gid == 'habitrpg') { @@ -306,14 +302,14 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', return true; }; - function _checkIfUserHasEnoughGemsForTavernChallenge() { + $scope.insufficientGemsForTavernChallenge = function() { var balance = User.user.balance || 0; var isForTavern = $scope.newChallenge.group == 'habitrpg'; - if (isForTavern && balance <= 0) { - $scope.isTavernChallengeAndUserCannotProvidePrize = false; + if (isForTavern) { + return balance <= 0; } else { - $scope.isTavernChallengeAndUserCannotProvidePrize = true; + return false; } } diff --git a/website/views/options/social/challenges.jade b/website/views/options/social/challenges.jade index 2f9201d5e1..69fa58b265 100644 --- a/website/views/options/social/challenges.jade +++ b/website/views/options/social/challenges.jade @@ -118,23 +118,23 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') form(ng-submit='save(newChallenge)') div input.btn.btn-success(type='submit', value=env.t('save'), - ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') + ng-disabled='insufficientGemsForTavernChallenge()') input.btn.btn-danger(type='button', ng-click='discard()', value=env.t('discard')) select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups') - .alert.alert-warning(ng-if='!isTavernChallengeAndUserCannotProvidePrize', - ng-click='openModal("buyGems",{track:"Gems > Toolbar"})') - =env.t('challengeNotEnoughGems') + .alert.alert-warning(ng-if='insufficientGemsForTavernChallenge()', + ng-click='openModal("buyGems",{track:"Gems > Toolbar"})') + =env.t('challengeNotEnoughGems') .challenge-options(ng-show='newChallenge.group') .form-group input.form-control(type='text', ng-model='newChallenge.name', placeholder=env.t('challengeTitle'), required='required', - ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') + ng-disabled='insufficientGemsForTavernChallenge()') .form-group input.form-control(type='text', minlength="3", maxlength="16", ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required - ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') + ng-disabled='insufficientGemsForTavernChallenge()') |  a.hint.vertical-20(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags', popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') @@ -142,14 +142,14 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') .form-group textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description' - ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') + ng-disabled='insufficientGemsForTavernChallenge()') .form-group .input-group span.input-group-addon .Pet_Currency_Gem1x input.form-control(type='number', placeholder=env.t('prize'), - ng-disabled='!isTavernChallengeAndUserCannotProvidePrize' + ng-disabled='insufficientGemsForTavernChallenge()' min="{{newChallenge.group=='habitrpg' ? 1 : 0}}", max="{{maxPrize}}", ng-model='newChallenge.prize') a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}",