Merge branch 'develop' into sabrecat/usernames-master

This commit is contained in:
Sabe Jones 2018-11-13 14:15:23 -06:00
commit b07dbb7752
5 changed files with 847 additions and 1371 deletions

View file

@ -8,7 +8,7 @@ function processUsers (lastId) {
'flags.verifiedUsername': true,
};
let fields = {
const fields = {
'items.pets': 1,
};
@ -22,6 +22,7 @@ function processUsers (lastId) {
.limit(250)
.sort({_id: 1})
.select(fields)
.exec()
.then(updateUsers)
.catch((err) => {
console.log(err);
@ -29,7 +30,7 @@ function processUsers (lastId) {
});
}
let progressCount = 1000;
const progressCount = 1000;
let count = 0;
function updateUsers (users) {
@ -44,30 +45,30 @@ function updateUsers (users) {
return Promise.all(userPromises)
.then(() => {
processUsers(lastUser._id);
return processUsers(lastUser._id);
});
}
function updateUser (user) {
count++;
let set = {migration: MIGRATION_NAME};
user.migration = MIGRATION_NAME;
if (user.items.pets['Bear-Veteran']) {
set['items.pets.Fox-Veteran'] = 5;
user.items.pets['Fox-Veteran'] = 5;
} else if (user.items.pets['Lion-Veteran']) {
set['items.pets.Bear-Veteran'] = 5;
user.items.pets['Bear-Veteran'] = 5;
} else if (user.items.pets['Tiger-Veteran']) {
set['items.pets.Lion-Veteran'] = 5;
user.items.pets['Lion-Veteran'] = 5;
} else if (user.items.pets['Wolf-Veteran']) {
set['items.pets.Tiger-Veteran'] = 5;
user.items.pets['Tiger-Veteran'] = 5;
} else {
set['items.pets.Wolf-Veteran'] = 5;
user.items.pets['Wolf-Veteran'] = 5;
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return user.update({_id: user._id}, {$set: set}).exec();
return user.save();
}
function displayData () {

2175
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -46,7 +46,7 @@
"got": "^9.0.0",
"gulp": "^4.0.0",
"gulp-babel": "^7.0.1",
"gulp-imagemin": "^4.1.0",
"gulp-imagemin": "^5.0.3",
"gulp-nodemon": "^2.4.1",
"gulp.spritesmith": "^6.9.0",
"habitica-markdown": "^1.3.0",

View file

@ -53,4 +53,15 @@ describe('POST /user/buy-gear/:key', () => {
message: 'You need to purchase a lower level gear before this one.',
});
});
it('returns an error if tries to buy gear from a different class', async () => {
let key = 'armor_rogue_1';
return expect(user.post(`/user/buy-gear/${key}`))
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: 'You can\'t buy this item.',
});
});
});

View file

@ -24,6 +24,15 @@ export class BuyMarketGearOperation extends AbstractGoldItemOperation {
return false;
}
canUserPurchase (user, item) {
super.canUserPurchase(user, item);
// check for different class gear
if (item.klass !== 'special' && item.klass !== user.stats.class) {
throw new NotAuthorized(this.i18n('cannotBuyItem'));
}
}
extractAndValidateParams (user, req) {
let key = this.key = get(req, 'params.key');
if (!key) throw new BadRequest(errorMessage('missingKeyParam'));