File size: 1,742 Bytes
25d91a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Verifies allowed-value metadata for config docs and validation.
import { describe, expect, it } from "vitest";
import { summarizeAllowedValues } from "./allowed-values.js";

describe("summarizeAllowedValues", () => {
  it("does not collapse mixed-type entries that stringify similarly", () => {
    const summary = summarizeAllowedValues([1, "1", 1, "1"]);
    expect(summary).toStrictEqual({
      formatted: '1, "1"',
      hiddenCount: 0,
      values: ["1", "1"],
    });
  });

  it("keeps distinct long values even when labels truncate the same way", () => {
    const prefix = "a".repeat(200);
    const summary = summarizeAllowedValues([`${prefix}x`, `${prefix}y`]);
    expect(summary).toStrictEqual({
      formatted:
        '"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... (+41 chars)", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... (+41 chars)"',
      hiddenCount: 0,
      values: [`${prefix}x`, `${prefix}y`],
    });
  });

  it("counts the omitted UTF-16 units after preserving a surrogate pair", () => {
    const prefix = "a".repeat(159);
    const value = `${prefix}😀tail`;

    expect(summarizeAllowedValues([value])).toStrictEqual({
      formatted: `"${prefix}... (+6 chars)"`,
      hiddenCount: 0,
      values: [value],
    });
  });

  it("returns empty label for undefined allowed value", () => {
    const summary = summarizeAllowedValues([undefined]);
    expect(summary).toStrictEqual({
      formatted: "",
      hiddenCount: 0,
      values: [""],
    });
  });
});