/**
 * Tests for `formatEncumbrance` — issue #1954.
 *
 * Bug: the ЕГРН-таблица (EgrnPropertyTable) hardcoded the «Обременения» row to
 * «—», although the backend already ships an `encumbrance` block (top-level,
 * derived from cad_zouit ∩ parcel geom). `formatEncumbrance` turns that block
 * into the human row value Section1ParcelInfo writes into `egrn.encumbrance`.
 *
 * Wire shape (verified live POST /analyze for 66:41:0205010:287):
 *   { has_zouit: true, zouit_count: 4, zouit_types: ["Санитарно-защитная зона"] }
 */
import { describe, expect, it } from "vitest";

import { formatEncumbrance } from "../site-finder-api";

describe("formatEncumbrance — #1954 ЗОУИТ → «Обременения» row", () => {
  it("renders «ЗОУИТ: N (types)» when has_zouit and types present", () => {
    expect(
      formatEncumbrance({
        has_zouit: true,
        zouit_count: 4,
        zouit_types: ["Санитарно-защитная зона"],
      }),
    ).toBe("ЗОУИТ: 4 (Санитарно-защитная зона)");
  });

  it("joins multiple zouit types with comma", () => {
    expect(
      formatEncumbrance({
        has_zouit: true,
        zouit_count: 3,
        zouit_types: ["Санитарно-защитная зона", "Охранная зона ЛЭП"],
      }),
    ).toBe("ЗОУИТ: 3 (Санитарно-защитная зона, Охранная зона ЛЭП)");
  });

  it("renders «ЗОУИТ: N» (no parens) when has_zouit but types empty", () => {
    expect(
      formatEncumbrance({ has_zouit: true, zouit_count: 2, zouit_types: [] }),
    ).toBe("ЗОУИТ: 2");
  });

  it("filters out blank type strings before joining", () => {
    expect(
      formatEncumbrance({
        has_zouit: true,
        zouit_count: 1,
        zouit_types: ["", "Санитарно-защитная зона"],
      }),
    ).toBe("ЗОУИТ: 1 (Санитарно-защитная зона)");
  });

  it("renders «не выявлено (НСПД)» when has_zouit is false", () => {
    expect(
      formatEncumbrance({ has_zouit: false, zouit_count: 0, zouit_types: [] }),
    ).toBe("не выявлено (НСПД)");
  });

  it("renders «—» (unknown) when the block is null/undefined (old cache)", () => {
    expect(formatEncumbrance(null)).toBe("—");
    expect(formatEncumbrance(undefined)).toBe("—");
  });
});
