Fixes Purchase contributor equipment (fixes #9179) (#9306)

* Able to see all non class related items in market

* Fix lint errors

* Able to see all non class related items in market

* Fix lint errors

* add test for showing contributor gear

* Added previously owned items to test with eslint exception
This commit is contained in:
borisabramovich86
2018-01-13 00:16:28 +02:00
committed by Sabe Jones
parent 06dd9fe859
commit 9e1a262f96
2 changed files with 34 additions and 14 deletions

View File

@@ -34,6 +34,31 @@ describe('shops', () => {
}); });
}); });
}); });
it('shows relevant non class gear in special category', () => {
let contributor = generateUser({
contributor: {
level: 7,
critical: true,
},
items: {
gear: {
owned: {
weapon_armoire_basicCrossbow: true, // eslint-disable-line camelcase
},
},
},
});
let gearCategories = shared.shops.getMarketGearCategories(contributor);
let specialCategory = gearCategories.find(o => o.identifier === 'none');
expect(specialCategory.items.find((item) => item.key === 'weapon_special_1'));
expect(specialCategory.items.find((item) => item.key === 'armor_special_1'));
expect(specialCategory.items.find((item) => item.key === 'head_special_1'));
expect(specialCategory.items.find((item) => item.key === 'shield_special_1'));
expect(specialCategory.items.find((item) => item.key === 'weapon_special_critical'));
expect(specialCategory.items.find((item) => item.key === 'weapon_armoire_basicCrossbow'));// eslint-disable-line camelcase
});
}); });
describe('questShop', () => { describe('questShop', () => {

View File

@@ -106,9 +106,7 @@ function getClassName (classType, language) {
shops.checkMarketGearLocked = function checkMarketGearLocked (user, items) { shops.checkMarketGearLocked = function checkMarketGearLocked (user, items) {
let result = filter(items, ['pinType', 'marketGear']); let result = filter(items, ['pinType', 'marketGear']);
let availableGear = map(updateStore(user), (item) => getItemInfo(user, 'marketGear', item).path); let availableGear = map(updateStore(user), (item) => getItemInfo(user, 'marketGear', item).path);
for (let gear of result) { for (let gear of result) {
if (gear.klass !== user.stats.class) { if (gear.klass !== user.stats.class) {
gear.locked = true; gear.locked = true;
@@ -167,9 +165,7 @@ shops.getMarketGearCategories = function getMarketGear (user, language) {
}); });
category.items = map(result, (e) => { category.items = map(result, (e) => {
let newItem = getItemInfo(user, 'marketGear', e, officialPinnedItems); return getItemInfo(user, 'marketGear', e, officialPinnedItems);
return newItem;
}); });
let specialGear = filter(content.gear.flat, (gear) => { let specialGear = filter(content.gear.flat, (gear) => {
@@ -183,7 +179,6 @@ shops.getMarketGearCategories = function getMarketGear (user, language) {
}); });
shops.checkMarketGearLocked(user, category.items); shops.checkMarketGearLocked(user, category.items);
categories.push(category); categories.push(category);
} }
@@ -193,20 +188,20 @@ shops.getMarketGearCategories = function getMarketGear (user, language) {
}; };
let falseGear = filter(content.gear.flat, (gear) => { let falseGear = filter(content.gear.flat, (gear) => {
return user.items.gear.owned[gear.key] === false && let prevOwnedFalseGear = user.items.gear.owned[gear.key] === false && gear.klass !== user.stats.class;
(gear.klass === 'special' && !gear.specialClass || let specialNonClassGear = !user.items.gear.owned[gear.key] &&
gear.key.indexOf('mystery') !== -1 || content.classes.indexOf(gear.klass) < 0 &&
gear.key.indexOf('armoire') !== -1); content.classes.indexOf(gear.specialClass) < 0 &&
(gear.canOwn && gear.canOwn(user));
return prevOwnedFalseGear || specialNonClassGear;
}); });
nonClassCategory.items = map(falseGear, (e) => { nonClassCategory.items = map(falseGear, (e) => {
let newItem = getItemInfo(user, 'marketGear', e); return getItemInfo(user, 'marketGear', e);
return newItem;
}); });
shops.checkMarketGearLocked(user, nonClassCategory.items);
categories.push(nonClassCategory); categories.push(nonClassCategory);
return categories; return categories;
}; };