provider-display.test.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { describe, expect, it } from "vitest";
  2. import { isProviderFinalized } from "@/lib/utils/provider-display";
  3. describe("isProviderFinalized", () => {
  4. it.each([
  5. {
  6. name: "null providerChain + null statusCode = not finalized",
  7. entry: { providerChain: null, statusCode: null, blockedBy: null },
  8. expected: false,
  9. },
  10. {
  11. name: "empty providerChain + null statusCode = not finalized",
  12. entry: { providerChain: [], statusCode: null, blockedBy: null },
  13. expected: false,
  14. },
  15. {
  16. name: "undefined fields = not finalized",
  17. entry: {},
  18. expected: false,
  19. },
  20. {
  21. name: "providerChain with items = finalized",
  22. entry: { providerChain: [{ id: 1, name: "provider-a" }], statusCode: 200 },
  23. expected: true,
  24. },
  25. {
  26. name: "null providerChain + statusCode present = finalized",
  27. entry: { providerChain: null, statusCode: 200 },
  28. expected: true,
  29. },
  30. {
  31. name: "statusCode 0 counts as finalized",
  32. entry: { providerChain: null, statusCode: 0 },
  33. expected: true,
  34. },
  35. {
  36. name: "error statusCode = finalized",
  37. entry: { providerChain: null, statusCode: 500 },
  38. expected: true,
  39. },
  40. {
  41. name: "blockedBy = finalized (regardless of other fields)",
  42. entry: { providerChain: null, statusCode: null, blockedBy: "sensitive_word" },
  43. expected: true,
  44. },
  45. {
  46. name: "blockedBy takes priority over missing chain/status",
  47. entry: { blockedBy: "rate_limit" },
  48. expected: true,
  49. },
  50. ])("$name", ({ entry, expected }) => {
  51. expect(isProviderFinalized(entry)).toBe(expected);
  52. });
  53. });