From 060e68ef95c4358aa0d4f0040585ee4f1ad13f63 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 9 Apr 2019 15:20:05 -0500 Subject: [PATCH 1/3] fix(tests): content coverage for wacky pots --- test/content/hatching-potions.test.js | 5 +++-- test/content/stable.test.js | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/test/content/hatching-potions.test.js b/test/content/hatching-potions.test.js index 72464137a9..918d88a67c 100644 --- a/test/content/hatching-potions.test.js +++ b/test/content/hatching-potions.test.js @@ -9,13 +9,14 @@ import hatchingPotions from '../../website/common/script/content/hatching-potion describe('hatchingPotions', () => { describe('all', () => { - it('is a combination of drop and premium potions', () => { + it('is a combination of drop, premium, and wacky potions', () => { let dropNumber = Object.keys(hatchingPotions.drops).length; let premiumNumber = Object.keys(hatchingPotions.premium).length; + let wackyNumber = Object.keys(hatchingPotions.wacky).length; let allNumber = Object.keys(hatchingPotions.all).length; expect(allNumber).to.be.greaterThan(0); - expect(allNumber).to.equal(dropNumber + premiumNumber); + expect(allNumber).to.equal(dropNumber + premiumNumber + wackyNumber); }); it('contains basic information about each potion', () => { diff --git a/test/content/stable.test.js b/test/content/stable.test.js index 5b0faaee37..34802c31fc 100644 --- a/test/content/stable.test.js +++ b/test/content/stable.test.js @@ -47,6 +47,18 @@ describe('stable', () => { }); }); + describe('wackyPets', () => { + it('contains a pet for each wacky potion * each drop egg', () => { + let numberOfWackyPotions = Object.keys(potions.wacky).length; + let numberOfDropEggs = Object.keys(eggs.drops).length; + let numberOfWackyPets = Object.keys(stable.wackyPets).length; + let expectedTotal = numberOfWackyPotions * numberOfDropEggs; + + expect(numberOfWackyPets).to.be.greaterThan(0); + expect(numberOfWackyPets).to.equal(expectedTotal); + }); + }); + describe('specialPets', () => { it('each value is a valid translation string', () => { each(stable.specialPets, (pet) => { @@ -107,10 +119,11 @@ describe('stable', () => { let questNumber = Object.keys(stable.questPets).length; let specialNumber = Object.keys(stable.specialPets).length; let premiumNumber = Object.keys(stable.premiumPets).length; + let wackyNumber = Object.keys(stable.wackyPets).length; let allNumber = Object.keys(stable.petInfo).length; expect(allNumber).to.be.greaterThan(0); - expect(allNumber).to.equal(dropNumber + questNumber + specialNumber + premiumNumber); + expect(allNumber).to.equal(dropNumber + questNumber + specialNumber + premiumNumber + wackyNumber); }); it('contains basic information about each pet', () => { From 6b933914ef0cc3636434b8761ada649919e5013f Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 9 Apr 2019 16:25:49 -0500 Subject: [PATCH 2/3] fix(pets): disallow hatching quest pets with Wacky potions --- test/common/ops/hatch.js | 16 ++++++++++++++++ website/common/script/ops/hatch.js | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/test/common/ops/hatch.js b/test/common/ops/hatch.js index 9c1039f29b..919829d6b8 100644 --- a/test/common/ops/hatch.js +++ b/test/common/ops/hatch.js @@ -93,6 +93,22 @@ describe('shared.ops.hatch', () => { done(); } }); + + it('does not allow hatching quest pet egg using wacky potion', (done) => { + user.items.eggs = {Bunny: 1}; + user.items.hatchingPotions = {Veggie: 1}; + user.items.pets = {}; + try { + hatch(user, {params: {egg: 'Bunny', hatchingPotion: 'Veggie'}}); + } catch (err) { + expect(err).to.be.an.instanceof(BadRequest); + expect(err.message).to.equal(i18n.t('messageInvalidEggPotionCombo')); + expect(user.items.pets).to.be.empty; + expect(user.items.eggs).to.eql({Bunny: 1}); + expect(user.items.hatchingPotions).to.eql({Veggie: 1}); + done(); + } + }); }); context('successful hatching', () => { diff --git a/website/common/script/ops/hatch.js b/website/common/script/ops/hatch.js index 121e45647e..672372e125 100644 --- a/website/common/script/ops/hatch.js +++ b/website/common/script/ops/hatch.js @@ -20,7 +20,7 @@ module.exports = function hatch (user, req = {}) { throw new NotFound(i18n.t('messageMissingEggPotion', req.language)); } - if (content.hatchingPotions[hatchingPotion].premium && !content.dropEggs[egg]) { + if ((content.hatchingPotions[hatchingPotion].premium || content.hatchingPotions[hatchingPotion].wacky) && !content.dropEggs[egg]) { throw new BadRequest(i18n.t('messageInvalidEggPotionCombo', req.language)); } From 6ce2caecf932e872e889d411078dddd33ffaee08 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 9 Apr 2019 16:26:26 -0500 Subject: [PATCH 3/3] 4.92.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index d463f85ed0..0df3fd2a69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.92.0", + "version": "4.92.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 836d394461..996db1da45 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.92.0", + "version": "4.92.1", "main": "./website/server/index.js", "dependencies": { "@google-cloud/trace-agent": "^3.6.0",