Tests des compétences¶
Couverture automatisée : api/tests/test_skills.py (service) et api/tests/test_skills_api.py
(routes/permissions). Les scénarios ci-dessous couvrent en plus la parité multi-surface et le rendu
en jeu, qui ne sont pas automatisables dans la suite Pytest.
SKL-001 — Construction de l'arbre et courbe (admin web)¶
Prérequis : permission ADMIN_ALLOW_EDIT_SKILLS.
- Créer une branche « Médical », y ajouter un nœud « Infirmier » (coût 1, permission
SKILL_MEDIC_NURSE) puis « Médecin » (prérequis « Infirmier », coût 2, buff lié). - Positionner les deux nœuds sur le canevas par glisser-déposer, recharger la page.
- Définir la courbe : niveau 1 → 0 XP → 3 points ; niveau 2 → 100 XP → 1 point.
- Tenter de créer le niveau 3 avec un XP requis inférieur ou égal au niveau 2 ; tenter de créer le niveau 4 sans le niveau 3 ; tenter de supprimer le niveau 1 alors que le niveau 2 existe.
Attendu : la position des nœuds est restituée identique après rechargement ; les trois tentatives de l'étape 4 sont rejetées explicitement.
SKL-009 — Création d'un nœud depuis une branche¶
Prérequis : permission ADMIN_ALLOW_EDIT_SKILLS, une branche vide puis une branche contenant
un nœud, image admin reconstruite.
- Dans la branche vide, cliquer sur Nouveau nœud et vérifier que la modale s'ouvre sans erreur JavaScript.
- Conserver Aucun comme prérequis, saisir un nom et un coût valides puis confirmer.
- Créer un second nœud en choisissant le premier comme prérequis.
- Recharger la page et contrôler la liste ainsi que le lien sur le canevas.
- Recommencer puis tester Annuler,
Escape, un nom d'un caractère et un coût inférieur à 1. - Rejouer sans
ADMIN_ALLOW_EDIT_SKILLS, puis tenter directement la requête de mutation.
Attendu : les deux créations valides sont persistées et affichées ; le select accepte Aucun et le nœud existant. Annulation, Escape et validation HTML invalide ne mutent rien. Sans permission, le bouton est absent et l'API refuse une requête forgée.
SKL-002 — Progression, déblocage et F4 (en jeu)¶
Prérequis : l'arbre de SKL-001, un personnage chargé avec 0 XP.
- Appuyer sur F4 : vérifier l'affichage XP/niveau/points et l'arbre visuel.
- Créditer 100 XP via
/grantxpou l'admin web ; rouvrir F4. - Débloquer « Infirmier » (coût 1) sur un nœud accessible.
- Tenter de débloquer « Médecin » avant d'avoir assez de points ; puis créditer les points nécessaires et débloquer.
Attendu : F4 s'ouvre sans PNJ ni lieu particulier ; le niveau/les points affichés correspondent à la courbe ; le déblocage refusé (étape 4) ne modifie aucun état ; le déblocage réussi retire le coût exact.
SKL-003 — Permission de compétence lue par une ressource tierce¶
Prérequis : SKL-002 complété (« Infirmier » débloqué).
- Depuis une ressource FiveM quelconque (ou la console serveur), lire
Player(source).state.medusaSkillFlagspour le joueur concerné.
Attendu : la chaîne SKILL_MEDIC_NURSE apparaît immédiatement après le déblocage, sans appel API
depuis la ressource tierce.
SKL-004 — Révocation immédiate à la désactivation d'un nœud¶
Prérequis : un personnage connecté ayant débloqué « Médecin » (buff + permission actifs).
- Un administrateur désactive le nœud « Médecin » depuis l'admin web.
- Observer le client du joueur concerné sans qu'il ne rouvre F4 ni ne se reconnecte.
Attendu : le buff lié disparaît des buffs actifs et la permission disparaît de
medusaSkillFlags immédiatement ; le solde de points du personnage ne change pas (point non
remboursé) ; F4 ne montre plus « Médecin » comme débloqué.
SKL-005 — Buff partagé par deux nœuds¶
Prérequis : deux nœuds référençant le même buff, tous deux débloqués par un même personnage.
- Désactiver un seul des deux nœuds ; vérifier les buffs actifs du personnage.
- Désactiver le second nœud ; vérifier à nouveau.
Attendu : après l'étape 1, une instance du buff reste active (celle du nœud encore actif) ; après l'étape 2, plus aucune instance n'est active.
SKL-006 — Respec en cascade¶
Prérequis : une chaîne de trois nœuds (A → B → C par prérequis), tous débloqués par un personnage.
- Un administrateur respec le nœud A (le premier de la chaîne) depuis l'admin web ou F10.
Attendu : les trois nœuds sont retirés dans la même action, leurs coûts intégralement recrédités, et la réponse/le message affiché énumère explicitement les trois nœuds retirés.
SKL-007 — Parité web / F10 / commande pour l'octroi manuel d'XP¶
Prérequis : permission ADMIN_ALLOW_GRANT_XP sur un rôle de test, un personnage connecté.
- Créditer de l'XP depuis la fiche personnage (admin web), avec motif.
- Créditer de l'XP depuis le panneau F10 (bouton « Gérer les compétences »), avec motif.
- Créditer de l'XP via
/grantxp <compte> <montant> <motif>. - Retirer le rôle de test et répéter chaque surface.
Attendu : les trois surfaces créditent effectivement l'XP et produisent une entrée dans le journal d'audit admin ; sans la permission, les trois surfaces refusent l'action.
SKL-008 — Redémarrage de medusa-skills avec des joueurs connectés¶
Prérequis : un joueur connecté avec des permissions de compétence actives.
- Redémarrer la ressource
medusa-skills(restart medusa-skillsou équivalent txAdmin).
Attendu : la state bag existante persiste côté client tant que le joueur reste connecté ; une resynchronisation complète a lieu peu après le redémarrage sans action du joueur.