diff --git a/test/common/ops/releaseBoth.js b/test/common/ops/releaseBoth.js index dc8bea14a1..dab22cae60 100644 --- a/test/common/ops/releaseBoth.js +++ b/test/common/ops/releaseBoth.js @@ -1,4 +1,5 @@ import releaseBoth from '../../../website/common/script/ops/releaseBoth'; +import content from '../../../website/common/script/content/index'; import i18n from '../../../website/common/script/i18n'; import { generateUser, @@ -65,19 +66,41 @@ describe('shared.ops.releaseBoth', () => { expect(user.items.mounts[animal]).to.equal(null); }); - it('removes currentPet', () => { + it('removes drop currentPet', () => { + let petInfo = content.petInfo[user.items.currentPet]; + expect(petInfo.type).to.equal('drop'); releaseBoth(user); expect(user.items.currentMount).to.be.empty; expect(user.items.currentPet).to.be.empty; }); - it('removes currentMount', () => { + it('removes drop currentMount', () => { + let mountInfo = content.mountInfo[user.items.currentMount]; + expect(mountInfo.type).to.equal('drop'); releaseBoth(user); expect(user.items.currentMount).to.be.empty; }); + it('leaves non-drop pets and mounts equipped', () => { + let questAnimal = 'Gryphon-Base'; + user.items.currentMount = questAnimal; + user.items.currentPet = questAnimal; + user.items.pets[questAnimal] = 5; + user.items.mounts[questAnimal] = true; + + let petInfo = content.petInfo[user.items.currentPet]; + expect(petInfo.type).to.not.equal('drop'); + let mountInfo = content.mountInfo[user.items.currentMount]; + expect(mountInfo.type).to.not.equal('drop'); + + releaseBoth(user); + + expect(user.items.currentMount).to.equal(questAnimal); + expect(user.items.currentPet).to.equal(questAnimal); + }); + it('decreases user\'s balance', () => { releaseBoth(user); diff --git a/test/common/ops/releaseMounts.js b/test/common/ops/releaseMounts.js index 744221393d..fd67eeff68 100644 --- a/test/common/ops/releaseMounts.js +++ b/test/common/ops/releaseMounts.js @@ -1,4 +1,5 @@ import releaseMounts from '../../../website/common/script/ops/releaseMounts'; +import content from '../../../website/common/script/content/index'; import i18n from '../../../website/common/script/i18n'; import { generateUser, @@ -37,12 +38,26 @@ describe('shared.ops.releaseMounts', () => { expect(user.items.mounts[animal]).to.equal(null); }); - it('removes currentMount', () => { + it('removes drop currentMount', () => { + let mountInfo = content.mountInfo[user.items.currentMount]; + expect(mountInfo.type).to.equal('drop'); releaseMounts(user); expect(user.items.currentMount).to.be.empty; }); + it('leaves non-drop mount equipped', () => { + let questAnimal = 'Gryphon-Base'; + user.items.currentMount = questAnimal; + user.items.mounts[questAnimal] = true; + + let mountInfo = content.mountInfo[user.items.currentMount]; + expect(mountInfo.type).to.not.equal('drop'); + releaseMounts(user); + + expect(user.items.currentMount).to.equal(questAnimal); + }); + it('increases mountMasterCount achievement', () => { releaseMounts(user); diff --git a/test/common/ops/releasePets.js b/test/common/ops/releasePets.js index 0d2c451133..549916b147 100644 --- a/test/common/ops/releasePets.js +++ b/test/common/ops/releasePets.js @@ -1,4 +1,5 @@ import releasePets from '../../../website/common/script/ops/releasePets'; +import content from '../../../website/common/script/content/index'; import i18n from '../../../website/common/script/i18n'; import { generateUser, @@ -37,12 +38,26 @@ describe('shared.ops.releasePets', () => { expect(user.items.pets[animal]).to.equal(0); }); - it('removes currentPet', () => { + it('removes drop currentPet', () => { + let petInfo = content.petInfo[user.items.currentPet]; + expect(petInfo.type).to.equal('drop'); releasePets(user); expect(user.items.currentPet).to.be.empty; }); + it('leaves non-drop pets equipped', () => { + let questAnimal = 'Gryphon-Base'; + user.items.currentPet = questAnimal; + user.items.pets[questAnimal] = 5; + + let petInfo = content.petInfo[user.items.currentPet]; + expect(petInfo.type).to.not.equal('drop'); + releasePets(user); + + expect(user.items.currentPet).to.equal(questAnimal); + }); + it('decreases user\'s balance', () => { releasePets(user); diff --git a/website/common/script/ops/releaseBoth.js b/website/common/script/ops/releaseBoth.js index 0ee46a5e71..8677d46f8d 100644 --- a/website/common/script/ops/releaseBoth.js +++ b/website/common/script/ops/releaseBoth.js @@ -29,8 +29,17 @@ module.exports = function releaseBoth (user, req = {}, analytics) { user.balance -= 1.5; } - user.items.currentMount = ''; - user.items.currentPet = ''; + let mountInfo = content.mountInfo[user.items.currentMount]; + + if (mountInfo && mountInfo.type === 'drop') { + user.items.currentMount = ''; + } + + let petInfo = content.petInfo[user.items.currentPet]; + + if (petInfo && petInfo.type === 'drop') { + user.items.currentPet = ''; + } for (animal in content.pets) { if (user.items.pets[animal] === -1) { diff --git a/website/common/script/ops/releaseMounts.js b/website/common/script/ops/releaseMounts.js index ac50a5a7af..a4b2e5dee1 100644 --- a/website/common/script/ops/releaseMounts.js +++ b/website/common/script/ops/releaseMounts.js @@ -5,16 +5,19 @@ import { } from '../libs/errors'; module.exports = function releaseMounts (user, req = {}, analytics) { - let mount; - if (user.balance < 1) { throw new NotAuthorized(i18n.t('notEnoughGems', req.language)); } user.balance -= 1; - user.items.currentMount = ''; - for (mount in content.pets) { + let mountInfo = content.mountInfo[user.items.currentMount]; + + if (mountInfo && mountInfo.type === 'drop') { + user.items.currentMount = ''; + } + + for (let mount in content.pets) { user.items.mounts[mount] = null; } diff --git a/website/common/script/ops/releasePets.js b/website/common/script/ops/releasePets.js index b637a5d3ba..c84e7c9959 100644 --- a/website/common/script/ops/releasePets.js +++ b/website/common/script/ops/releasePets.js @@ -10,7 +10,12 @@ module.exports = function releasePets (user, req = {}, analytics) { } user.balance -= 1; - user.items.currentPet = ''; + + let petInfo = content.petInfo[user.items.currentPet]; + + if (petInfo && petInfo.type === 'drop') { + user.items.currentPet = ''; + } for (let pet in content.pets) { user.items.pets[pet] = 0;