Rework gem adjustment so it actually makes sense

This commit is contained in:
Blade Barringer
2015-07-24 17:15:37 -05:00
parent 68f9a78aac
commit 6aae668b8c
3 changed files with 42 additions and 19 deletions

View File

@@ -471,14 +471,41 @@ describe('Challenges Controller', function() {
expect(chal.timestamp).to.be.greaterThan(0); expect(chal.timestamp).to.be.greaterThan(0);
expect(chal.official).to.eql(false); expect(chal.official).to.eql(false);
}); });
});
describe('insufficientGemsForTavernChallenge', function() {
context('tavern challenge', function() { context('tavern challenge', function() {
it('sets isTavernChallengeAndUserCannotProvidePrize to false if user has no gems'); it('returns true if user has no gems', function() {
it('sets isTavernChallengeAndUserCannotProvidePrize to true if user has at least one gem'); 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() { 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);
});
}); });
}); });

View File

@@ -1,5 +1,3 @@
"use strict";
habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', 'Challenges', 'Notification', '$compile', 'Groups', '$state', '$stateParams', 'Tasks', 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) { 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); _calculateMaxPrize(defaultGroup);
_checkIfUserHasEnoughGemsForTavernChallenge();
}; };
/** /**
@@ -282,7 +279,6 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
$scope.$watch('newChallenge.group', function(gid){ $scope.$watch('newChallenge.group', function(gid){
if (!gid) return; if (!gid) return;
_checkIfUserHasEnoughGemsForTavernChallenge();
_calculateMaxPrize(gid); _calculateMaxPrize(gid);
if (gid == 'habitrpg') { if (gid == 'habitrpg') {
@@ -306,14 +302,14 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
return true; return true;
}; };
function _checkIfUserHasEnoughGemsForTavernChallenge() { $scope.insufficientGemsForTavernChallenge = function() {
var balance = User.user.balance || 0; var balance = User.user.balance || 0;
var isForTavern = $scope.newChallenge.group == 'habitrpg'; var isForTavern = $scope.newChallenge.group == 'habitrpg';
if (isForTavern && balance <= 0) { if (isForTavern) {
$scope.isTavernChallengeAndUserCannotProvidePrize = false; return balance <= 0;
} else { } else {
$scope.isTavernChallengeAndUserCannotProvidePrize = true; return false;
} }
} }

View File

@@ -118,23 +118,23 @@ script(type='text/ng-template', id='partials/options.social.challenges.html')
form(ng-submit='save(newChallenge)') form(ng-submit='save(newChallenge)')
div div
input.btn.btn-success(type='submit', value=env.t('save'), 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')) 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') 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', .alert.alert-warning(ng-if='insufficientGemsForTavernChallenge()',
ng-click='openModal("buyGems",{track:"Gems > Toolbar"})') ng-click='openModal("buyGems",{track:"Gems > Toolbar"})')
=env.t('challengeNotEnoughGems') =env.t('challengeNotEnoughGems')
.challenge-options(ng-show='newChallenge.group') .challenge-options(ng-show='newChallenge.group')
.form-group .form-group
input.form-control(type='text', ng-model='newChallenge.name', input.form-control(type='text', ng-model='newChallenge.name',
placeholder=env.t('challengeTitle'), required='required', placeholder=env.t('challengeTitle'), required='required',
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') ng-disabled='insufficientGemsForTavernChallenge()')
.form-group .form-group
input.form-control(type='text', minlength="3", maxlength="16", input.form-control(type='text', minlength="3", maxlength="16",
ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') ng-disabled='insufficientGemsForTavernChallenge()')
|&nbsp; |&nbsp;
a.hint.vertical-20(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags', a.hint.vertical-20(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags',
popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') 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 .form-group
textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description' textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description'
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize') ng-disabled='insufficientGemsForTavernChallenge()')
.form-group .form-group
.input-group .input-group
span.input-group-addon span.input-group-addon
.Pet_Currency_Gem1x .Pet_Currency_Gem1x
input.form-control(type='number', placeholder=env.t('prize'), input.form-control(type='number', placeholder=env.t('prize'),
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize' ng-disabled='insufficientGemsForTavernChallenge()'
min="{{newChallenge.group=='habitrpg' ? 1 : 0}}", min="{{newChallenge.group=='habitrpg' ? 1 : 0}}",
max="{{maxPrize}}", ng-model='newChallenge.prize') max="{{maxPrize}}", ng-model='newChallenge.prize')
a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}", a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}",