import { describe, expect, it } from "vitest"; import { characterRarityGradientClass, rarityGradient, rarityGradientClass, rarityTextClass, rarityTextColor } from "@/lib/catalog/rarity"; describe("catalog rarity backgrounds", () => { it("maps every weapon and artifact rarity to its Tailwind gradient", () => { expect(rarityGradientClass(1)).toBe("bg-[#697177] bg-[linear-gradient(90deg,rgba(105,113,119,1)_0%,rgba(137,144,147,1)_100%)]"); expect(rarityGradientClass(2)).toBe("bg-[#5D8972] bg-[linear-gradient(90deg,rgba(93,137,114,1)_0%,rgba(121,167,127,1)_100%)]"); expect(rarityGradient(1)).toBe("linear-gradient(90deg, rgba(105, 113, 119, 1) 0%, rgba(137, 144, 147, 1) 100%)"); expect(rarityGradient(2)).toBe("linear-gradient(90deg, rgba(93, 137, 114, 1) 0%, rgba(121, 167, 127, 1) 100%)"); expect(rarityGradientClass(3)).toBe("bg-[#4D7691] bg-[linear-gradient(90deg,rgba(77,118,145,1)_0%,rgba(71,135,165,1)_100%)]"); expect(rarityGradientClass(4)).toBe("bg-[#6D6A9C] bg-[linear-gradient(90deg,rgba(109,106,156,1)_0%,rgba(150,122,179,1)_100%)]"); expect(rarityGradientClass(5)).toBe("bg-[#A67B34] bg-[linear-gradient(90deg,rgba(166,123,52,1)_0%,rgba(178,123,44,1)_100%)]"); expect(rarityGradient(3)).toBe("linear-gradient(90deg, rgba(77, 118, 145, 1) 0%, rgba(71, 135, 165, 1) 100%)"); expect(rarityGradient(4)).toBe("linear-gradient(90deg, rgba(109, 106, 156, 1) 0%, rgba(150, 122, 179, 1) 100%)"); expect(rarityGradient(5)).toBe("linear-gradient(90deg, rgba(166, 123, 52, 1) 0%, rgba(178, 123, 44, 1) 100%)"); expect(rarityTextClass(3)).toBe("text-[#4D7691]"); expect(rarityTextClass(4)).toBe("text-[#6D6A9C]"); expect(rarityTextClass(5)).toBe("text-[#A67B34]"); expect(rarityTextColor(3)).toBe("#4D7691"); expect(rarityTextColor(4)).toBe("#6D6A9C"); expect(rarityTextColor(5)).toBe("#A67B34"); }); it("uses the neutral equipment background when rarity is unavailable", () => { expect(rarityGradient(null)).toBe("#17383d"); expect(rarityGradientClass(undefined)).toBeUndefined(); expect(rarityTextClass(undefined)).toBeUndefined(); expect(rarityTextColor(undefined)).toBe("#17171c"); }); it("uses red for special characters without changing other rarity backgrounds", () => { for (const key of ["10000062", "10000117", "10000118"]) { expect(characterRarityGradientClass(key, 5)).toBe("bg-[#9A424E] bg-[linear-gradient(90deg,#9A424E_0%,#B85D67_100%)]"); expect(characterRarityGradientClass(key, null)).toBe(characterRarityGradientClass(key, 5)); } expect(characterRarityGradientClass("ordinary-character", 5)).toBe(rarityGradientClass(5)); expect(characterRarityGradientClass("ordinary-character", 1)).toBe(rarityGradientClass(1)); expect(characterRarityGradientClass("ordinary-character", 2)).toBe(rarityGradientClass(2)); }); });