fix: corrections générateur PNJ Traveller et tests Jest

- validateOptions : remplit les champs manquants et corrige les clés invalides
  (détection précédemment inopérante car getXByKey renvoie l'objet par défaut)
- generateCharacteristics : ne mélange plus le tableau avant affectation,
  la priorité des caractéristiques (high → medium → low) est respectée
- Exports manquants : convertSkillToMgt2eFormat, popRandomItems, ERROR_CODES,
  TravellerNpcError
- Tests : import des globals via @jest/globals (obligatoire en ESM),
  suppression de l'import obsolète buildMgt2eBaseActorSystem,
  attente corrigée pilot.smallCraft, test des doublons aligné sur le
  dédoublonnage réel (noms complets, spécialisations conservées)
- AGENTS.md : section Testing mise à jour
- README.md : ajouté
This commit is contained in:
2026-08-03 21:02:35 +02:00
parent f4ba85bcb9
commit 1c55484bf7
5 changed files with 188 additions and 20 deletions
+12 -4
View File
@@ -723,22 +723,30 @@ export function validateOptions(options = {}) {
const errors = [];
const validated = { ...options };
if (validated.citizenCategory && !getCitizenCategoryByKey(validated.citizenCategory)) {
// Remplir les valeurs manquantes avec les défauts
for (const key of ['citizenCategory', 'experience', 'role', 'gender']) {
if (!validated[key]) {
validated[key] = DEFAULT_OPTIONS[key];
}
}
// Corriger les valeurs invalides (getXByKey renvoie l'objet par défaut si la clé est inconnue)
if (getCitizenCategoryByKey(validated.citizenCategory).key !== validated.citizenCategory) {
errors.push(`Catégorie de citoyen invalide: ${validated.citizenCategory}`);
validated.citizenCategory = DEFAULT_OPTIONS.citizenCategory;
}
if (validated.experience && !getExperienceLevelByKey(validated.experience)) {
if (getExperienceLevelByKey(validated.experience).key !== validated.experience) {
errors.push(`Niveau d'expérience invalide: ${validated.experience}`);
validated.experience = DEFAULT_OPTIONS.experience;
}
if (validated.role && !getRoleByKey(validated.role)) {
if (getRoleByKey(validated.role).key !== validated.role) {
errors.push(`Rôle invalide: ${validated.role}`);
validated.role = DEFAULT_OPTIONS.role;
}
if (validated.gender && !getGenderByKey(validated.gender)) {
if (getGenderByKey(validated.gender).key !== validated.gender) {
errors.push(`Genre invalide: ${validated.gender}`);
validated.gender = DEFAULT_OPTIONS.gender;
}