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:
Jalansh
2020-08-09 21:55:59 +05:30
committed by GitHub
parent d7d7f82723
commit c0bf2cffea
6 changed files with 72 additions and 17 deletions

View File

@@ -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' },

View File

@@ -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();
}
});
});