mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
Add tests + some small adjusts
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { v4 as generateUUID } from 'uuid';
|
import { v4 as generateUUID } from 'uuid';
|
||||||
import validator from 'validator';
|
import validator from 'validator';
|
||||||
import { sleep } from '../../../../helpers/api-unit.helper';
|
import { sleep, translationCheck } from '../../../../helpers/api-unit.helper';
|
||||||
import {
|
import {
|
||||||
SPAM_MESSAGE_LIMIT,
|
SPAM_MESSAGE_LIMIT,
|
||||||
SPAM_MIN_EXEMPT_CONTRIB_LEVEL,
|
SPAM_MIN_EXEMPT_CONTRIB_LEVEL,
|
||||||
@@ -636,6 +636,206 @@ describe('Group Model', () => {
|
|||||||
expect(res.t).to.not.be.called;
|
expect(res.t).to.not.be.called;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('translateSystemMessages', () => {
|
||||||
|
it('translate quest_start', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'quest_start',
|
||||||
|
quest: 'basilist',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate boss_damage', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'boss_damage',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
quest: 'basilist',
|
||||||
|
userDamage: 15.3,
|
||||||
|
bossDamage: 3.7,
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate boss_dont_attack', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'boss_dont_attack',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
quest: 'basilist',
|
||||||
|
userDamage: 15.3,
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate boss_rage', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'boss_rage',
|
||||||
|
quest: 'lostMasterclasser3',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate boss_defeated', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'boss_defeated',
|
||||||
|
quest: 'lostMasterclasser3',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate user_found_items', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'user_found_items',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
quest: 'lostMasterclasser1',
|
||||||
|
items: {
|
||||||
|
ancientTome: 3,
|
||||||
|
forbiddenTome: 2,
|
||||||
|
hiddenTome: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate all_items_found', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'all_items_found',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate spell_cast_party', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'spell_cast_party',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
class: 'wizard',
|
||||||
|
spell: 'earth',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate spell_cast_user', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'spell_cast_user',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
class: 'special',
|
||||||
|
spell: 'snowball',
|
||||||
|
target: participatingMember.profile.name,
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate quest_abort', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'quest_abort',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
quest: 'basilist',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate tavern_quest_completed', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'tavern_quest_completed',
|
||||||
|
quest: 'stressbeast',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate tavern_boss_rage_tired', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'tavern_boss_rage_tired',
|
||||||
|
quest: 'stressbeast',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate tavern_boss_rage', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'tavern_boss_rage',
|
||||||
|
quest: 'dysheartener',
|
||||||
|
scene: 'market',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate tavern_boss_desperation', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'tavern_boss_desperation',
|
||||||
|
quest: 'stressbeast',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('translate claim_task', () => {
|
||||||
|
questLeader.preferences.language = 'en';
|
||||||
|
party.chat = [{
|
||||||
|
info: {
|
||||||
|
type: 'claim_task',
|
||||||
|
user: questLeader.profile.name,
|
||||||
|
task: 'Feed the pet',
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
party = Group.translateSystemMessages(party, questLeader);
|
||||||
|
translationCheck(party.chat[0].text);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
context('Instance Methods', () => {
|
context('Instance Methods', () => {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import mongo from './mongo'; // eslint-disable-line
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import i18n from '../../website/common/script/i18n';
|
import i18n from '../../website/common/script/i18n';
|
||||||
import * as Tasks from '../../website/server/models/task';
|
import * as Tasks from '../../website/server/models/task';
|
||||||
|
export { translationCheck } from './translate';
|
||||||
|
|
||||||
afterEach((done) => {
|
afterEach((done) => {
|
||||||
sandbox.restore();
|
sandbox.restore();
|
||||||
|
|||||||
@@ -16,3 +16,9 @@ export function translate (key, variables, language) {
|
|||||||
|
|
||||||
return translatedString;
|
return translatedString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function translationCheck (translatedString) {
|
||||||
|
expect(translatedString).to.not.be.empty;
|
||||||
|
expect(translatedString).to.not.eql(STRING_ERROR_MSG);
|
||||||
|
expect(translatedString).to.not.match(STRING_DOES_NOT_EXIST_MSG);
|
||||||
|
}
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ schema.statics.getGroups = async function getGroups (options = {}) {
|
|||||||
return groupsArray;
|
return groupsArray;
|
||||||
};
|
};
|
||||||
|
|
||||||
function translateSystemMessages (group, user) {
|
function _translateSystemMessages (group, user) {
|
||||||
let foundText = '';
|
let foundText = '';
|
||||||
let lang = user.preferences.language;
|
let lang = user.preferences.language;
|
||||||
for (let i = 0; i < group.chat.length; i++) {
|
for (let i = 0; i < group.chat.length; i++) {
|
||||||
@@ -365,9 +365,6 @@ function translateSystemMessages (group, user) {
|
|||||||
case 'tavern_boss_rage':
|
case 'tavern_boss_rage':
|
||||||
msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.rage[group.chat[i].info.scene](lang)}\``;
|
msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.rage[group.chat[i].info.scene](lang)}\``;
|
||||||
break;
|
break;
|
||||||
case 'tavern_boss_rage_effect':
|
|
||||||
msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.rage.effect(lang)}\``;
|
|
||||||
break;
|
|
||||||
case 'tavern_boss_desperation':
|
case 'tavern_boss_desperation':
|
||||||
msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.desperation.text(lang)}\``;
|
msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.desperation.text(lang)}\``;
|
||||||
break;
|
break;
|
||||||
@@ -381,12 +378,14 @@ function translateSystemMessages (group, user) {
|
|||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
schema.statics.translateSystemMessages = _translateSystemMessages;
|
||||||
|
|
||||||
// When converting to json remove chat messages with more than 1 flag and remove all flags info
|
// When converting to json remove chat messages with more than 1 flag and remove all flags info
|
||||||
// unless the user is an admin or said chat is posted by that user
|
// unless the user is an admin or said chat is posted by that user
|
||||||
// Not putting into toJSON because there we can't access user
|
// Not putting into toJSON because there we can't access user
|
||||||
// It also removes the _meta field that can be stored inside a chat message
|
// It also removes the _meta field that can be stored inside a chat message
|
||||||
schema.statics.toJSONCleanChat = function groupToJSONCleanChat (group, user) {
|
schema.statics.toJSONCleanChat = function groupToJSONCleanChat (group, user) {
|
||||||
group = translateSystemMessages(group, user);
|
group = _translateSystemMessages(group, user);
|
||||||
|
|
||||||
let toJSON = group.toJSON();
|
let toJSON = group.toJSON();
|
||||||
|
|
||||||
@@ -993,7 +992,7 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
|
|||||||
group.quest.progress.rage += Math.abs(down);
|
group.quest.progress.rage += Math.abs(down);
|
||||||
if (group.quest.progress.rage >= quest.boss.rage.value) {
|
if (group.quest.progress.rage >= quest.boss.rage.value) {
|
||||||
group.sendChat(quest.boss.rage.effect('en'), null, null, {
|
group.sendChat(quest.boss.rage.effect('en'), null, null, {
|
||||||
type: 'tavern_boss_rage_effect',
|
type: 'boss_rage',
|
||||||
quest: quest.key,
|
quest: quest.key,
|
||||||
});
|
});
|
||||||
group.quest.progress.rage = 0;
|
group.quest.progress.rage = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user