mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 22:27:26 +01:00
Casting Chilling Frost and Stealth skill again will not be processed and return an error instead. Fixes #12361. (#12404)
* Added logic for a repeating Chilling Frost skill. Added test case for redundant chilling frost skill cast. Added comments for the logic of repeating Stealth skill because of an error. * Added logic for a repeating Stealth skill. Avoiding MP reduction still pending because of console error. Test cases pending. * Completed the logic for a repeated Stealth skill. Added repeated frost skill cast check in common. Removed exclusive test. Test cases are pending. * Added test case for Stealth skill recast. Fixed lint errors. Fixed a flaw in if statement which led to test case failure. * Fixed lint errors in test case. * Added a common JSON entry for skil recasts in three files. Other files remaining. Added Chilling Frost recast check in common code. Modified test cases. * Added spellDisabled condition in client code. * Reverted JSON messages for three languages. Added spellAlreadyCast attribute to JSON file in locales/en. Made changes for showing appropriate message in client code. * Added an import for throwing BadRequest in common code. Modified test case accordingly. * Update website/common/script/content/spells.js Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com> * Added target and req attributes in cast() method arguments. * Changed common code test case because of increased function parameters. Moved chilling frost test casse to common tests instead of server tests. * Changed the test case format in common tests. * Added a missing done statement. * Fixed a minor error which led to failing test case. Removed the exclusive test which led to lint error. * Fixed lint errors. * Added a class named 'disabled' for the frontend change. * fix(skills): style cleanup * fix(skills): unfix Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com> Co-authored-by: Sabe Jones <sabrecat@gmail.com>
This commit is contained in:
@@ -161,6 +161,23 @@ describe('POST /user/class/cast/:spellId', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('Issue #12361: returns an error if stealth has already been cast', async () => {
|
||||
await user.update({
|
||||
'stats.class': 'rogue',
|
||||
'stats.lvl': 15,
|
||||
'stats.mp': 400,
|
||||
'stats.buffs.stealth': 1,
|
||||
});
|
||||
await user.sync();
|
||||
await expect(user.post('/user/class/cast/stealth'))
|
||||
.to.eventually.be.rejected.and.eql({
|
||||
code: 400,
|
||||
error: 'BadRequest',
|
||||
message: t('spellAlreadyCast'),
|
||||
});
|
||||
expect(user.stats.mp).to.equal(400);
|
||||
});
|
||||
|
||||
it('returns an error if targeted party member doesn\'t exist', async () => {
|
||||
const { groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: { type: 'party', privacy: 'private' },
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
import spells from '../../../website/common/script/content/spells';
|
||||
import {
|
||||
NotAuthorized,
|
||||
BadRequest,
|
||||
} from '../../../website/common/script/libs/errors';
|
||||
import i18n from '../../../website/common/script/i18n';
|
||||
|
||||
@@ -25,7 +26,7 @@ describe('shared.ops.spells', () => {
|
||||
const spell = spells.healer.heal;
|
||||
|
||||
try {
|
||||
spell.cast(user);
|
||||
spell.cast(user, null, { language: 'en' });
|
||||
} catch (err) {
|
||||
expect(err).to.be.an.instanceof(NotAuthorized);
|
||||
expect(err.message).to.equal(i18n.t('messageHealthAlreadyMax'));
|
||||
@@ -35,4 +36,22 @@ describe('shared.ops.spells', () => {
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
it('Issue #12361: returns an error if chilling frost has already been cast', done => {
|
||||
user.stats.class = 'wizard';
|
||||
user.stats.lvl = 15;
|
||||
user.stats.mp = 400;
|
||||
user.stats.buffs.streaks = true;
|
||||
|
||||
const spell = spells.wizard.frost;
|
||||
try {
|
||||
spell.cast(user, null, { language: 'en' });
|
||||
} catch (err) {
|
||||
expect(err).to.be.an.instanceof(BadRequest);
|
||||
expect(err.message).to.equal(i18n.t('spellAlreadyCast'));
|
||||
expect(user.stats.mp).to.eql(400);
|
||||
|
||||
done();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user