tscircuit/ti

ti tscircuit library

Version
1.0.198
License
unset
Stars
0

system-block-ui/src/rendering/circuit-json-errors.test.ts

import { describe, expect, test } from "bun:test";
import type { AnyCircuitElement } from "circuit-json";
import {
  assertCircuitJsonHasNoErrors,
  CircuitJsonEvaluationError,
  getCircuitJsonErrors,
} from "./circuit-json-errors";

const element = (value: unknown): AnyCircuitElement =>
  value as AnyCircuitElement;

describe("Circuit JSON error detection", () => {
  test("allows ordinary elements and rejects embedded render errors", () => {
    const circuitJson = [
      element({ type: "source_component", source_component_id: "source_1" }),
      element({
        type: "schematic_error",
        error_type: "schematic_port_not_found",
        message: "Could not find selector .missing > .VCC",
      }),
    ];

    expect(getCircuitJsonErrors(circuitJson)).toHaveLength(1);
    expect(() => assertCircuitJsonHasNoErrors(circuitJson)).toThrow(
      CircuitJsonEvaluationError,
    );
    expect(() => assertCircuitJsonHasNoErrors(circuitJson)).toThrow(
      "Could not find selector",
    );
    expect(() =>
      assertCircuitJsonHasNoErrors(circuitJson, {
        ignoredErrorTypes: ["schematic_port_not_found"],
      }),
    ).not.toThrow();
  });
});