tscircuit/ti

ti tscircuit library

Version
1.0.195
License
unset
Stars
0

system-block-ui/src/components/SubcircuitPickerModal.test.ts

import { describe, expect, test } from "bun:test";

import type { SubcircuitDefinition } from "../model";
import { getSelectableSubcircuitCandidates } from "./SubcircuitPickerModal";

const definition = (
  id: string,
  options: { canInstantiate?: boolean; category?: string } = {},
): SubcircuitDefinition => ({
  id,
  title: id,
  category: options.category ?? "Wireless",
  componentName: id.replaceAll("-", "_"),
  importPath: "@tsci/tscircuit.ti",
  sourcePath: `lib/subcircuits/${id}.circuit.tsx`,
  canInstantiate: options.canInstantiate,
  ports: [],
});

describe("subcircuit picker candidates", () => {
  test("shows only selectable same-category parts in alphabetical order", () => {
    const current = definition("current-part");
    const candidates = [
      definition("zeta-part"),
      definition("unavailable-part", { canInstantiate: false }),
      definition("power-part", { category: "Power" }),
      current,
      definition("alpha-part"),
    ];

    expect(
      getSelectableSubcircuitCandidates(candidates, current).map(
        (item) => item.id,
      ),
    ).toEqual(["alpha-part", "zeta-part"]);
  });
});