From 9d41fb02524b9913d8e1471bc4740ee48a5594f5 Mon Sep 17 00:00:00 2001 From: Mateus Etto Date: Sat, 24 Mar 2018 23:57:02 +0900 Subject: [PATCH] Add tests + some small adjusts --- test/api/v3/unit/models/group.test.js | 202 +++++++++++++++++++++++++- test/helpers/api-unit.helper.js | 1 + test/helpers/translate.js | 6 + website/server/models/group.js | 11 +- 4 files changed, 213 insertions(+), 7 deletions(-) diff --git a/test/api/v3/unit/models/group.test.js b/test/api/v3/unit/models/group.test.js index fff28e4cc9..2e8144a095 100644 --- a/test/api/v3/unit/models/group.test.js +++ b/test/api/v3/unit/models/group.test.js @@ -1,7 +1,7 @@ import moment from 'moment'; import { v4 as generateUUID } from 'uuid'; import validator from 'validator'; -import { sleep } from '../../../../helpers/api-unit.helper'; +import { sleep, translationCheck } from '../../../../helpers/api-unit.helper'; import { SPAM_MESSAGE_LIMIT, SPAM_MIN_EXEMPT_CONTRIB_LEVEL, @@ -636,6 +636,206 @@ describe('Group Model', () => { 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', () => { diff --git a/test/helpers/api-unit.helper.js b/test/helpers/api-unit.helper.js index d32423dfb9..e248d3d6f8 100644 --- a/test/helpers/api-unit.helper.js +++ b/test/helpers/api-unit.helper.js @@ -8,6 +8,7 @@ import mongo from './mongo'; // eslint-disable-line import moment from 'moment'; import i18n from '../../website/common/script/i18n'; import * as Tasks from '../../website/server/models/task'; +export { translationCheck } from './translate'; afterEach((done) => { sandbox.restore(); diff --git a/test/helpers/translate.js b/test/helpers/translate.js index e146c27a71..c12e97c147 100644 --- a/test/helpers/translate.js +++ b/test/helpers/translate.js @@ -16,3 +16,9 @@ export function translate (key, variables, language) { 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); +} diff --git a/website/server/models/group.js b/website/server/models/group.js index a4e7e94407..d418d8a2da 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -315,7 +315,7 @@ schema.statics.getGroups = async function getGroups (options = {}) { return groupsArray; }; -function translateSystemMessages (group, user) { +function _translateSystemMessages (group, user) { let foundText = ''; let lang = user.preferences.language; for (let i = 0; i < group.chat.length; i++) { @@ -365,9 +365,6 @@ function translateSystemMessages (group, user) { case 'tavern_boss_rage': msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.rage[group.chat[i].info.scene](lang)}\``; break; - case 'tavern_boss_rage_effect': - msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.rage.effect(lang)}\``; - break; case 'tavern_boss_desperation': msg = `\`${shared.content.quests[group.chat[i].info.quest].boss.desperation.text(lang)}\``; break; @@ -381,12 +378,14 @@ function translateSystemMessages (group, user) { return group; } +schema.statics.translateSystemMessages = _translateSystemMessages; + // 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 // 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 schema.statics.toJSONCleanChat = function groupToJSONCleanChat (group, user) { - group = translateSystemMessages(group, user); + group = _translateSystemMessages(group, user); let toJSON = group.toJSON(); @@ -993,7 +992,7 @@ schema.methods._processBossQuest = async function processBossQuest (options) { group.quest.progress.rage += Math.abs(down); if (group.quest.progress.rage >= quest.boss.rage.value) { group.sendChat(quest.boss.rage.effect('en'), null, null, { - type: 'tavern_boss_rage_effect', + type: 'boss_rage', quest: quest.key, }); group.quest.progress.rage = 0;