/**
 * #532 — formatRegion() 순수 함수 단위 테스트.
 * 설계서: docs/design/532-region-display/README.md
 */
import { formatRegion } from "@/lib/region";

describe("formatRegion", () => {
  it("falsy 입력은 빈 문자열", () => {
    expect(formatRegion("")).toBe("");
    expect(formatRegion(null)).toBe("");
    expect(formatRegion(undefined)).toBe("");
  });

  it("파이프 구분 지역을 계층(breadcrumb)으로 변환한다", () => {
    expect(formatRegion("한국|서울|강남구")).toBe("한국 › 서울 › 강남구");
  });

  it("'null' 토큰(대소문자 무시)은 제거한다", () => {
    expect(formatRegion("일본|null")).toBe("일본");
    expect(formatRegion("일본|NULL")).toBe("일본");
  });

  it("빈 토큰은 제거한다", () => {
    expect(formatRegion("한국||관악구")).toBe("한국 › 관악구");
  });

  it("더미 토큰 '나라'는 제거한다", () => {
    expect(formatRegion("나라|서울")).toBe("서울");
  });

  it("단일 토큰은 그대로 반환한다", () => {
    expect(formatRegion("한국")).toBe("한국");
  });

  it("모든 토큰이 더미/빈 값이면 빈 문자열", () => {
    expect(formatRegion("한국|")).toBe("한국");
    expect(formatRegion("|")).toBe("");
    expect(formatRegion("나라|null|")).toBe("");
  });

  it("토큰 앞뒤 공백은 trim 된다", () => {
    expect(formatRegion(" 한국 | 서울 ")).toBe("한국 › 서울");
  });
});
