Skip to content

Commit a6bc020

Browse files
committed
Update new set names and equipment data structure
1 parent 4ea7f71 commit a6bc020

7 files changed

Lines changed: 1099 additions & 423 deletions

File tree

src/components/loadouts/components/loadout-preview-dialog.test.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ vi.mock("@/data/equipment/EQUIPMENT_DATA", () => ({
2222
tier_id: 5,
2323
part_type: "headgear",
2424
set_name: "Test Set",
25-
set_effects: [{ pieces: 2, effect: "Test effect" }],
2625
},
2726
},
2827
}));

src/components/loadouts/components/loadouts-dialog-ui.test.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ vi.mock("@/data/equipment/EQUIPMENT_DATA", () => ({
3131
tier_id: 5,
3232
part_type: "headgear",
3333
set_name: "Prime Test Set",
34-
set_effects: [{ pieces: 2, effect: "Test effect" }],
3534
},
3635
2: {
3736
id: 2,
@@ -40,7 +39,6 @@ vi.mock("@/data/equipment/EQUIPMENT_DATA", () => ({
4039
tier_id: 4,
4140
part_type: "gloves",
4241
set_name: "Choice Test Set",
43-
set_effects: [{ pieces: 2, effect: "Other effect" }],
4442
},
4543
},
4644
}));

src/components/loadouts/components/loadouts-list-ui.test.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ vi.mock("@/data/equipment/EQUIPMENT_DATA", () => ({
4040
tier_id: 5,
4141
part_type: "headgear",
4242
set_name: "Test Set",
43-
set_effects: [{ pieces: 2, effect: "Test effect" }],
4443
},
4544
},
4645
}));

src/data/equipment/EQUIPMENT_DATA.test.ts

Lines changed: 80 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import {
55
EQUIPMENT_DATA,
66
EQUIPMENT_PART_TYPES,
77
} from "@/data/equipment/EQUIPMENT_DATA";
8+
import {
9+
EQUIPMENT_SET_EFFECTS_DATA,
10+
type EquipmentSetName,
11+
} from "@/data/equipment/EQUIPMENT_SET_EFFECTS_DATA";
812

913
describe("equipment data", () => {
1014
it("contains the 100 catalog pieces across the 34 reference sets", () => {
@@ -20,21 +24,21 @@ describe("equipment data", () => {
2024
for (const piece of pieces) {
2125
expect(EQUIPMENT_PART_TYPES).toContain(piece.part_type);
2226
expect(existsSync(resolve("public", piece.image.slice(1)))).toBe(true);
23-
expect(piece.set_effects.length).toBeGreaterThan(0);
27+
expect(EQUIPMENT_SET_EFFECTS_DATA[piece.set_name]).toBeDefined();
2428
}
25-
const sets = pieces.reduce((grouped, piece) => {
26-
const set = grouped.get(piece.set_name) ?? [];
27-
set.push(piece);
28-
grouped.set(piece.set_name, set);
29-
return grouped;
30-
}, new Map<string, typeof pieces>());
31-
for (const set of sets.values()) {
32-
const requiredPieces = set[0].set_effects.at(-1)?.pieces;
29+
const setNames = new Set(pieces.map((piece) => piece.set_name));
30+
expect(
31+
Object.keys(EQUIPMENT_SET_EFFECTS_DATA).filter(
32+
(setName) => !setNames.has(setName as EquipmentSetName),
33+
),
34+
).toEqual([]);
35+
for (const setName of setNames) {
36+
const setPieces = pieces.filter((piece) => piece.set_name === setName);
37+
const requiredPieces = EQUIPMENT_SET_EFFECTS_DATA[setName].at(-1)?.pieces;
3338
expect(requiredPieces).toBeDefined();
34-
if (!requiredPieces) continue;
35-
expect(set).toHaveLength(requiredPieces);
39+
expect(setPieces).toHaveLength(requiredPieces ?? 0);
3640
if (requiredPieces === 4)
37-
expect(new Set(set.map((piece) => piece.part_type))).toEqual(
41+
expect(new Set(setPieces.map((piece) => piece.part_type))).toEqual(
3842
new Set(EQUIPMENT_PART_TYPES),
3943
);
4044
}
@@ -49,15 +53,77 @@ describe("equipment data", () => {
4953
expect(primeVariants.map((piece) => piece.image)).toEqual(
5054
primeVariantSourceIds.map((id) => EQUIPMENT_DATA[id].image),
5155
);
52-
expect(new Set(primeVariants.map((piece) => piece.name)).size).toBe(38);
5356
for (const piece of primeVariants) {
5457
expect(piece.tier_id).toBe(5);
5558
expect(tier4Images).toContain(piece.image);
5659
expect(
57-
piece.set_effects.every(
60+
EQUIPMENT_SET_EFFECTS_DATA[piece.set_name].every(
5861
({ effect }) => effect === "Effect details pending.",
5962
),
6063
).toBe(true);
6164
}
6265
});
66+
67+
it("preserves representative equipment records", () => {
68+
expect(EQUIPMENT_DATA[1]).toEqual({
69+
id: 1,
70+
name: "Glutton's Hat",
71+
image: "/images/Equipment/EQUIP_HAT_005.webp",
72+
tier_id: 4,
73+
part_type: "headgear",
74+
set_name: "Glutton's Visage",
75+
});
76+
expect(EQUIPMENT_DATA[39]).toEqual({
77+
id: 39,
78+
name: "Warden Helmet",
79+
image: "/images/Equipment/EQUIP_SET_102_H.webp",
80+
tier_id: 5,
81+
part_type: "headgear",
82+
set_name: "Arbiter",
83+
});
84+
expect(
85+
Object.values(EQUIPMENT_DATA)
86+
.filter((piece) => piece.id >= 63)
87+
.map((piece) => piece.name),
88+
).toEqual([
89+
"Grand Banquet Chapeau",
90+
"Gourmand's Apron",
91+
"Devourer's Sticky Gloves",
92+
"Devourer's Sticky Footwear",
93+
"Tyrant's Helmet",
94+
"Tyrant's Armor",
95+
"Tyrant's Gauntlets",
96+
"Tyrant's Boots",
97+
"Ascendant White Wolf's Mask",
98+
"Ascendant White Wolf's Restraints",
99+
"Ascendant White Wolf's Grasp",
100+
"Ascendant White Wolf's Claw",
101+
"Ancient Stone Mark",
102+
"Ancient Stone Sandals",
103+
"Towering Mount Tai's Helmet",
104+
"Towering Mount Tai's Iron Armor",
105+
"Towering Mount Tai's Gloves",
106+
"Towering Mount Tai's Boots",
107+
"Crown of Eternal Frost",
108+
"Touch of Eternal Frost",
109+
"Vanguard Buff Coat",
110+
"Vanguard Leather Boots",
111+
"Gourmand's Hat",
112+
"Gourmand's Apron",
113+
"Gourmand's Gloves",
114+
"Gourmand's Slippers",
115+
"Victorious General's Gilded Armguards",
116+
"Victorious General's Gilded Greaves",
117+
"Almighty Jade Odong Hat",
118+
"Almighty Jade Odong Armor",
119+
"Manwol's Antlers",
120+
"Radiant Garb",
121+
"Great Sage's Touch",
122+
"Moonlight Hooves",
123+
"Fox Youkai's Fur Gloves",
124+
"Fox Youkai's Paws",
125+
"Undefeated Gisaeng's Headband",
126+
"Undefeated Gisaeng's Flower Slippers",
127+
]);
128+
});
63129
});

0 commit comments

Comments
 (0)