mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
fix typo in if condition and write test
This commit is contained in:
@@ -210,4 +210,47 @@ describe('User Model', () => {
|
||||
expect(user.hasNotCancelled()).to.be.false;
|
||||
});
|
||||
});
|
||||
|
||||
context('pre-save hook', () => {
|
||||
it('does not try to award achievements when achievements or items not selected in query', async () => {
|
||||
let user = new User();
|
||||
user = await user.save(); // necessary for user.isSelected to work correctly
|
||||
|
||||
// Create conditions for the Beast Master achievement to be awarded
|
||||
user.achievements.beastMasterCount = 3;
|
||||
expect(user.achievements.beastMaster).to.not.equal(true); // verify that it was not awarded initially
|
||||
|
||||
user = await user.save();
|
||||
// verify that it's been awarded
|
||||
expect(user.achievements.beastMaster).to.equal(true);
|
||||
|
||||
// reset the user
|
||||
user.achievements.beastMasterCount = 0;
|
||||
user.achievements.beastMaster = false;
|
||||
|
||||
user = await user.save();
|
||||
// verify it's been removed
|
||||
expect(user.achievements.beastMaster).to.equal(false);
|
||||
|
||||
// fetch the user without selecting the 'items' field
|
||||
user = await User.findById(user._id).select('-items').exec();
|
||||
expect(user.isSelected('items')).to.equal(false);
|
||||
|
||||
// create the conditions for the beast master achievement but this time it should not be awarded
|
||||
user.achievements.beastMasterCount = 3;
|
||||
user = await user.save();
|
||||
expect(user.achievements.beastMaster).to.equal(false);
|
||||
|
||||
// reset
|
||||
user.achievements.beastMasterCount = 0;
|
||||
user = await user.save();
|
||||
|
||||
// this time with achievements not selected
|
||||
user = await User.findById(user._id).select('-achievements').exec();
|
||||
expect(user.isSelected('achievements')).to.equal(false);
|
||||
user.achievements.beastMasterCount = 3;
|
||||
user = await user.save();
|
||||
expect(user.achievements.beastMaster).to.not.equal(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -171,7 +171,7 @@ schema.pre('save', true, function preSaveUser (next, done) {
|
||||
// since it'll break as soon as a new field is added to the schema but not here.
|
||||
|
||||
// do not calculate achievements if items or achievements are not selected
|
||||
if (!this.isSelected('items') || !this.isSelected('achievements')) {
|
||||
if (this.isSelected('items') && this.isSelected('achievements')) {
|
||||
// Determines if Beast Master should be awarded
|
||||
let beastMasterProgress = shared.count.beastMasterProgress(this.items.pets);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user