mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
92 lines
2.5 KiB
JavaScript
92 lines
2.5 KiB
JavaScript
import revive from '../../../common/script/ops/revive';
|
|
import i18n from '../../../common/script/i18n';
|
|
import {
|
|
generateUser,
|
|
} from '../../helpers/common.helper';
|
|
import {
|
|
NotAuthorized,
|
|
} from '../../../common/script/libs/errors';
|
|
import content from '../../../common/script/content/index';
|
|
|
|
describe('shared.ops.revive', () => {
|
|
let user;
|
|
|
|
beforeEach(() => {
|
|
user = generateUser();
|
|
user.stats.hp = 0;
|
|
});
|
|
|
|
it('returns an error when user is not dead', (done) => {
|
|
user.stats.hp = 10;
|
|
|
|
try {
|
|
revive(user);
|
|
} catch (err) {
|
|
expect(err).to.be.an.instanceof(NotAuthorized);
|
|
expect(err.message).to.equal(i18n.t('cannotRevive'));
|
|
done();
|
|
}
|
|
});
|
|
|
|
it('resets user\'s hp, exp and gp', () => {
|
|
user.stats.exp = 100;
|
|
user.stats.gp = 100;
|
|
|
|
revive(user);
|
|
|
|
expect(user.stats.hp).to.equal(50);
|
|
expect(user.stats.exp).to.equal(0);
|
|
expect(user.stats.gp).to.equal(0);
|
|
});
|
|
|
|
it('decreases user\'s level', () => {
|
|
user.stats.lvl = 2;
|
|
revive(user);
|
|
|
|
expect(user.stats.lvl).to.equal(1);
|
|
});
|
|
|
|
it('decreases a stat', () => {
|
|
user.stats.str = 2;
|
|
revive(user);
|
|
|
|
expect(user.stats.str).to.equal(1);
|
|
});
|
|
|
|
it('removes a random item from user gear owned', () => {
|
|
let weaponKey = 'weapon_warrior_0';
|
|
user.items.gear.owned[weaponKey] = true;
|
|
|
|
let [, message] = revive(user);
|
|
|
|
expect(message).to.equal(i18n.t('messageLostItem', { itemText: content.gear.flat[weaponKey].text()}));
|
|
expect(user.items.gear.owned[weaponKey]).to.be.false;
|
|
});
|
|
|
|
it('removes a random item from user gear equipped', () => {
|
|
let weaponKey = 'weapon_warrior_0';
|
|
let itemToLose = content.gear.flat[weaponKey];
|
|
|
|
user.items.gear.owned[weaponKey] = true;
|
|
user.items.gear.equipped[itemToLose.type] = itemToLose.key;
|
|
|
|
let [, message] = revive(user);
|
|
|
|
expect(message).to.equal(i18n.t('messageLostItem', { itemText: itemToLose.text()}));
|
|
expect(user.items.gear.equipped[itemToLose.type]).to.equal(`${itemToLose.type}_base_0`);
|
|
});
|
|
|
|
it('removes a random item from user gear costume', () => {
|
|
let weaponKey = 'weapon_warrior_0';
|
|
let itemToLose = content.gear.flat[weaponKey];
|
|
|
|
user.items.gear.owned[weaponKey] = true;
|
|
user.items.gear.costume[itemToLose.type] = itemToLose.key;
|
|
|
|
let [, message] = revive(user);
|
|
|
|
expect(message).to.equal(i18n.t('messageLostItem', { itemText: itemToLose.text()}));
|
|
expect(user.items.gear.costume[itemToLose.type]).to.equal(`${itemToLose.type}_base_0`);
|
|
});
|
|
});
|