enefel 2.12.0 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,32 +4,27 @@ import { getRaceFromCareer, getRaceSpecialSkills } from "../race";
4
4
  import { isSpecialSkill, SKILL_NAMES } from "../skill";
5
5
 
6
6
  describe("getRaceSpecialSkills", () => {
7
- it("devrait retourner les compétences spéciales communes à une race", () => {
7
+ it("devrait retourner un tableau de compétences spéciales (ou vide)", () => {
8
8
  const imperialSkills = getRaceSpecialSkills(RACE.IMPERIAL);
9
9
 
10
- // Imperial devrait avoir 'specialist' car 3/5 carrières l'ont
11
- expect(imperialSkills).toContain("specialist");
12
- expect(imperialSkills.length).toBeGreaterThan(0);
13
-
14
- // Vérifier que toutes les compétences retournées sont bien spéciales
10
+ // Toutes les compétences retournées doivent être spéciales
15
11
  imperialSkills.forEach((skill) => {
16
12
  expect(isSpecialSkill(skill as SKILL_NAMES)).toBe(true);
17
13
  });
18
14
  });
19
15
 
20
- it("devrait retourner 'star' pour Vampire", () => {
21
- const vampireSkills = getRaceSpecialSkills(RACE.VAMPIRE);
22
- expect(vampireSkills).toContain("star");
23
- });
24
-
25
- it("devrait retourner 'specialist' pour Amazon", () => {
26
- const amazonSkills = getRaceSpecialSkills(RACE.AMAZON);
27
- expect(amazonSkills).toContain("specialist");
16
+ it("ne devrait jamais retourner 'specialist' ou 'big-guy' (traits individuels, pas raciaux)", () => {
17
+ // Tester sur plusieurs races
18
+ const races = [RACE.IMPERIAL, RACE.VAMPIRE, RACE.AMAZON, RACE.HUMAN, RACE.ORC];
19
+ races.forEach((race) => {
20
+ const skills = getRaceSpecialSkills(race);
21
+ expect(skills).not.toContain("specialist");
22
+ expect(skills).not.toContain("big-guy");
23
+ });
28
24
  });
29
25
 
30
26
  it("devrait retourner un tableau vide pour une race sans compétences spéciales communes", () => {
31
27
  const humanSkills = getRaceSpecialSkills(RACE.HUMAN);
32
- // Human n'a pas de compétences spéciales communes à toutes les carrières
33
28
  expect(Array.isArray(humanSkills)).toBe(true);
34
29
  });
35
30
 
@@ -40,19 +35,26 @@ describe("getRaceSpecialSkills", () => {
40
35
  expect(race).toBe(RACE.IMPERIAL);
41
36
 
42
37
  const skills = getRaceSpecialSkills(race!);
43
- expect(skills.length).toBeGreaterThan(0);
44
- expect(skills).toContain("specialist");
38
+ expect(Array.isArray(skills)).toBe(true);
39
+ // Toutes les compétences retournées sont spéciales
40
+ skills.forEach((skill) => {
41
+ expect(isSpecialSkill(skill as SKILL_NAMES)).toBe(true);
42
+ });
45
43
  });
46
44
 
47
- it("devrait retourner les compétences qui apparaissent dans au moins 50% des carrières", () => {
45
+ it("ne devrait retourner que les compétences présentes dans au moins 50% des carrières", () => {
48
46
  const imperialSkills = getRaceSpecialSkills(RACE.IMPERIAL);
49
47
 
50
- // Imperial a 5 carrières, donc le seuil est 3 (50% de 5 = 2.5, arrondi à 3)
51
- // 'specialist' apparaît dans 3 carrières (thrower, blitzer, bodyguard)
52
- // Donc 'specialist' devrait être retourné
53
- expect(imperialSkills).toContain("specialist");
54
-
55
48
  // 'big-guy' apparaît seulement dans 1 carrière (ogre), donc ne devrait pas être retourné
56
49
  expect(imperialSkills).not.toContain("big-guy");
50
+ // 'specialist' est toujours filtré
51
+ expect(imperialSkills).not.toContain("specialist");
52
+ });
53
+
54
+ it("devrait retourner un tableau (pas undefined/null) pour toutes les races", () => {
55
+ Object.values(RACE).forEach((race) => {
56
+ const skills = getRaceSpecialSkills(race as RACE);
57
+ expect(Array.isArray(skills)).toBe(true);
58
+ });
57
59
  });
58
60
  });
@@ -5,27 +5,24 @@ const career_1 = require("../career");
5
5
  const race_1 = require("../race");
6
6
  const skill_1 = require("../skill");
7
7
  (0, globals_1.describe)("getRaceSpecialSkills", () => {
8
- (0, globals_1.it)("devrait retourner les compétences spéciales communes à une race", () => {
8
+ (0, globals_1.it)("devrait retourner un tableau de compétences spéciales (ou vide)", () => {
9
9
  const imperialSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.IMPERIAL);
10
- // Imperial devrait avoir 'specialist' car 3/5 carrières l'ont
11
- (0, globals_1.expect)(imperialSkills).toContain("specialist");
12
- (0, globals_1.expect)(imperialSkills.length).toBeGreaterThan(0);
13
- // Vérifier que toutes les compétences retournées sont bien spéciales
10
+ // Toutes les compétences retournées doivent être spéciales
14
11
  imperialSkills.forEach((skill) => {
15
12
  (0, globals_1.expect)((0, skill_1.isSpecialSkill)(skill)).toBe(true);
16
13
  });
17
14
  });
18
- (0, globals_1.it)("devrait retourner 'star' pour Vampire", () => {
19
- const vampireSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.VAMPIRE);
20
- (0, globals_1.expect)(vampireSkills).toContain("star");
21
- });
22
- (0, globals_1.it)("devrait retourner 'specialist' pour Amazon", () => {
23
- const amazonSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.AMAZON);
24
- (0, globals_1.expect)(amazonSkills).toContain("specialist");
15
+ (0, globals_1.it)("ne devrait jamais retourner 'specialist' ou 'big-guy' (traits individuels, pas raciaux)", () => {
16
+ // Tester sur plusieurs races
17
+ const races = [career_1.RACE.IMPERIAL, career_1.RACE.VAMPIRE, career_1.RACE.AMAZON, career_1.RACE.HUMAN, career_1.RACE.ORC];
18
+ races.forEach((race) => {
19
+ const skills = (0, race_1.getRaceSpecialSkills)(race);
20
+ (0, globals_1.expect)(skills).not.toContain("specialist");
21
+ (0, globals_1.expect)(skills).not.toContain("big-guy");
22
+ });
25
23
  });
26
24
  (0, globals_1.it)("devrait retourner un tableau vide pour une race sans compétences spéciales communes", () => {
27
25
  const humanSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.HUMAN);
28
- // Human n'a pas de compétences spéciales communes à toutes les carrières
29
26
  (0, globals_1.expect)(Array.isArray(humanSkills)).toBe(true);
30
27
  });
31
28
  (0, globals_1.it)("devrait fonctionner avec un RACE obtenu depuis un CAREER_ID", () => {
@@ -33,16 +30,23 @@ const skill_1 = require("../skill");
33
30
  const race = (0, race_1.getRaceFromCareer)(careerId);
34
31
  (0, globals_1.expect)(race).toBe(career_1.RACE.IMPERIAL);
35
32
  const skills = (0, race_1.getRaceSpecialSkills)(race);
36
- (0, globals_1.expect)(skills.length).toBeGreaterThan(0);
37
- (0, globals_1.expect)(skills).toContain("specialist");
33
+ (0, globals_1.expect)(Array.isArray(skills)).toBe(true);
34
+ // Toutes les compétences retournées sont spéciales
35
+ skills.forEach((skill) => {
36
+ (0, globals_1.expect)((0, skill_1.isSpecialSkill)(skill)).toBe(true);
37
+ });
38
38
  });
39
- (0, globals_1.it)("devrait retourner les compétences qui apparaissent dans au moins 50% des carrières", () => {
39
+ (0, globals_1.it)("ne devrait retourner que les compétences présentes dans au moins 50% des carrières", () => {
40
40
  const imperialSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.IMPERIAL);
41
- // Imperial a 5 carrières, donc le seuil est 3 (50% de 5 = 2.5, arrondi à 3)
42
- // 'specialist' apparaît dans 3 carrières (thrower, blitzer, bodyguard)
43
- // Donc 'specialist' devrait être retourné
44
- (0, globals_1.expect)(imperialSkills).toContain("specialist");
45
41
  // 'big-guy' apparaît seulement dans 1 carrière (ogre), donc ne devrait pas être retourné
46
42
  (0, globals_1.expect)(imperialSkills).not.toContain("big-guy");
43
+ // 'specialist' est toujours filtré
44
+ (0, globals_1.expect)(imperialSkills).not.toContain("specialist");
45
+ });
46
+ (0, globals_1.it)("devrait retourner un tableau (pas undefined/null) pour toutes les races", () => {
47
+ Object.values(career_1.RACE).forEach((race) => {
48
+ const skills = (0, race_1.getRaceSpecialSkills)(race);
49
+ (0, globals_1.expect)(Array.isArray(skills)).toBe(true);
50
+ });
47
51
  });
48
52
  });
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "2.12.0",
3
+ "version": "2.13.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "enefel",
9
- "version": "2.12.0",
9
+ "version": "2.13.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "csv-parse": "^6.1.0",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "2.12.0",
3
+ "version": "2.13.0",
4
4
  "description": "Fantasy Football game engine",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "2.12.0",
3
+ "version": "2.13.0",
4
4
  "description": "Fantasy Football game engine",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",