Hall Fixes (#11403)

* fix(hall): correctly casts owned gear and mounts

* typo
This commit is contained in:
Matteo Pagliazzi
2019-10-06 17:08:11 +02:00
committed by GitHub
parent ca7399f6c1
commit 16c8825b2b
2 changed files with 22 additions and 5 deletions

View File

@@ -100,14 +100,23 @@ describe('Items Utils', () => {
}); });
it('converts values for mounts paths to numbers', () => { it('converts values for mounts paths to numbers', () => {
expect(castItemVal('items.mounts.Cactus-Base', '5')).to.equal(5); expect(castItemVal('items.mounts.Cactus-Base', 'true')).to.equal(true);
expect(castItemVal('items.mounts.Aether-Invisible', '5')).to.equal(5); expect(castItemVal('items.mounts.Aether-Invisible', 'false')).to.equal(false);
expect(castItemVal('items.mounts.Aether-Invalid', '5')).to.equal(5); expect(castItemVal('items.mounts.Aether-Invalid', 'true')).to.equal(true);
expect(castItemVal('items.mounts.Aether-Invalid', 'truish')).to.equal(true);
expect(castItemVal('items.mounts.Aether-Invalid', 0)).to.equal(false);
}); });
it('converts values for quests paths to numbers', () => { it('converts values for quests paths to numbers', () => {
expect(castItemVal('items.quests.atom3', '5')).to.equal(5); expect(castItemVal('items.quests.atom3', '5')).to.equal(5);
expect(castItemVal('items.quests.invalid', '5')).to.equal(5); expect(castItemVal('items.quests.invalid', '5')).to.equal(5);
}); });
it('converts values for owned gear', () => {
expect(castItemVal('items.gear.owned.shield_warrior_0', 'true')).to.equal(true);
expect(castItemVal('items.gear.owned.invalid', 'false')).to.equal(false);
expect(castItemVal('items.gear.owned.invalid', 'thruthy')).to.equal(true);
expect(castItemVal('items.gear.owned.invalid', 0)).to.equal(false);
});
}); });
}); });

View File

@@ -60,18 +60,26 @@ export function validateItemPath (itemPath) {
// value to the correct format. // value to the correct format.
// Example a numeric string like "5" applied to a food item (expecting an interger) // Example a numeric string like "5" applied to a food item (expecting an interger)
// will be converted to the number 5 // will be converted to the number 5
// TODO cast the correct value for `items.gear.owned`
export function castItemVal (itemPath, itemVal) { export function castItemVal (itemPath, itemVal) {
if ( if (
itemPath.indexOf('items.pets') === 0 || itemPath.indexOf('items.pets') === 0 ||
itemPath.indexOf('items.eggs') === 0 || itemPath.indexOf('items.eggs') === 0 ||
itemPath.indexOf('items.hatchingPotions') === 0 || itemPath.indexOf('items.hatchingPotions') === 0 ||
itemPath.indexOf('items.food') === 0 || itemPath.indexOf('items.food') === 0 ||
itemPath.indexOf('items.mounts') === 0 ||
itemPath.indexOf('items.quests') === 0 itemPath.indexOf('items.quests') === 0
) { ) {
return Number(itemVal); return Number(itemVal);
} }
if (
itemPath.indexOf('items.mounts') === 0 ||
itemPath.indexOf('items.gear.owned') === 0
) {
if (itemVal === 'true') return true;
if (itemVal === 'false') return false;
return Boolean(itemVal);
}
return itemVal; return itemVal;
} }