eletrotupi / tcc/ frontend/tests/constants/mood-components.unit.test.tsb3ead45a73252ca3006b75f6c77a3d72e8055586
1.4 KB | 55 lines Raw
1
import {
2
  getMoodComponent,
3
  intensityLabel,
4
  intensityToValue,
5
} from "@/constants/mood-components";
6

7
describe("getMoodComponent", () => {
8
  it("finds a component by its id", () => {
9
    expect(getMoodComponent("joy")).toStrictEqual({
10
      id: "joy",
11
      label: "Alegria",
12
      color: "#FBBF24",
13
    });
14
  });
15

16
  it("returns undefined for an unknown id", () => {
17
    expect(getMoodComponent("ennui")).toBeUndefined();
18
  });
19
});
20

21
describe("intensityLabel", () => {
22
  it.each([
23
    { value: 1, label: "Suave" },
24
    { value: 2, label: "Moderada" },
25
    { value: 3, label: "Intensa" },
26
  ])("labels the numeric intensity $value", ({ value, label }) => {
27
    expect(intensityLabel(value)).toBe(label);
28
  });
29

30
  it.each([
31
    { value: "LIGHT", label: "Suave" },
32
    { value: "MODERATE", label: "Moderada" },
33
    { value: "HIGH", label: "Intensa" },
34
  ])("labels the string intensity $value", ({ value, label }) => {
35
    expect(intensityLabel(value)).toBe(label);
36
  });
37
});
38

39
describe("intensityToValue", () => {
40
  it.each([
41
    { value: 1, expected: "LIGHT" },
42
    { value: 2, expected: "MODERATE" },
43
    { value: 3, expected: "HIGH" },
44
  ])("maps the numeric intensity $value", ({ value, expected }) => {
45
    expect(intensityToValue(value)).toBe(expected);
46
  });
47

48
  it("round-trips every value back to its label", () => {
49
    for (const value of [1, 2, 3]) {
50
      expect(intensityLabel(intensityToValue(value))).toBe(
51
        intensityLabel(value),
52
      );
53
    }
54
  });
55
});