diff --git a/test/common/ops/buy/buyQuestGems.js b/test/common/ops/buy/buyQuestGems.js index 3bb19841e4..8e98e1b94d 100644 --- a/test/common/ops/buy/buyQuestGems.js +++ b/test/common/ops/buy/buyQuestGems.js @@ -49,6 +49,15 @@ describe('shared.ops.buyQuestGems', () => { buyQuest(user, {params: {key}}); + expect(user.items.quests[key]).to.equal(1); + expect(pinnedGearUtils.removeItemByPath.notCalled).to.equal(true); + }); + it('if a user\'s count of a quest scroll is negative, it will be reset to 0 before incrementing when they buy a new one.', () => { + let key = 'dustbunnies'; + user.items.quests[key] = -1; + + buyQuest(user, {params: {key}}); + expect(user.items.quests[key]).to.equal(1); expect(pinnedGearUtils.removeItemByPath.notCalled).to.equal(true); }); diff --git a/test/common/ops/buy/buyQuest.js b/test/common/ops/buy/buyQuestGold.js similarity index 90% rename from test/common/ops/buy/buyQuest.js rename to test/common/ops/buy/buyQuestGold.js index 4554b9832a..dec213aa54 100644 --- a/test/common/ops/buy/buyQuest.js +++ b/test/common/ops/buy/buyQuestGold.js @@ -1,7 +1,7 @@ import { generateUser, } from '../../../helpers/common.helper'; -import {BuyQuestWithGoldOperation} from '../../../../website/common/script/ops/buy/buyQuest'; +import {BuyQuestWithGoldOperation} from '../../../../website/common/script/ops/buy/buyQuestGold'; import { BadRequest, NotAuthorized, @@ -43,6 +43,18 @@ describe('shared.ops.buyQuest', () => { expect(analytics.track).to.be.calledOnce; }); + it('if a user\'s count of a quest scroll is negative, it will be reset to 0 before incrementing when they buy a new one.', () => { + user.stats.gp = 205; + let key = 'dilatoryDistress1'; + user.items.quests[key] = -1; + buyQuest(user, { + params: {key}, + }, analytics); + expect(user.items.quests[key]).to.equal(1); + expect(user.stats.gp).to.equal(5); + expect(analytics.track).to.be.calledOnce; + }); + it('buys a Quest scroll with the right quantity if a string is passed for quantity', () => { user.stats.gp = 1000; buyQuest(user, { diff --git a/website/common/script/ops/buy/buy.js b/website/common/script/ops/buy/buy.js index 76bec34b6e..b0cc98c053 100644 --- a/website/common/script/ops/buy/buy.js +++ b/website/common/script/ops/buy/buy.js @@ -6,7 +6,7 @@ import {BuyArmoireOperation} from './buyArmoire'; import {BuyHealthPotionOperation} from './buyHealthPotion'; import {BuyMarketGearOperation} from './buyMarketGear'; import buyMysterySet from './buyMysterySet'; -import {BuyQuestWithGoldOperation} from './buyQuest'; +import {BuyQuestWithGoldOperation} from './buyQuestGold'; import {BuySpellOperation} from './buySpell'; import purchaseOp from './purchase'; import hourglassPurchase from './hourglassPurchase'; diff --git a/website/common/script/ops/buy/buyQuestGem.js b/website/common/script/ops/buy/buyQuestGem.js index 1a1a24d90a..63ba528ce3 100644 --- a/website/common/script/ops/buy/buyQuestGem.js +++ b/website/common/script/ops/buy/buyQuestGem.js @@ -46,7 +46,7 @@ export class BuyQuestWithGemOperation extends AbstractGemItemOperation { } executeChanges (user, item, req) { - user.items.quests[item.key] = user.items.quests[item.key] || 0; + if (!user.items.quests[item.key] || user.items.quests[item.key] < 0) user.items.quests[item.key] = 0; user.items.quests[item.key] += this.quantity; if (user.markModified) user.markModified('items.quests'); diff --git a/website/common/script/ops/buy/buyQuest.js b/website/common/script/ops/buy/buyQuestGold.js similarity index 100% rename from website/common/script/ops/buy/buyQuest.js rename to website/common/script/ops/buy/buyQuestGold.js