tests/step1parts.test.js
- import { describe, it, expect } from "vitest";
- import { INSTANCES } from "./api.js";
- const { step1 } = INSTANCES;
- describe("Step1Parts", () => {
-
- it("schema yields parts, tempo and part with sane defaults; renders BPM markup via tempo.format", () => {
- const params = step1.schema();
- const parts = params.find((p) => p.name === "parts");
- expect(parts).toMatchObject({ default: 1, min: 1, max: 5 });
- const tempo = params.find((p) => p.name === "tempo");
- expect(tempo).toMatchObject({ default: 120, min: 30, max: 210 });
- expect(tempo.format(120)).toContain("120");
- expect(tempo.format(120)).toContain("BPM");
- const part = params.find((p) => p.name === "part");
- expect(part.type).toBe("nested");
- expect(part.defaults).toHaveLength(5);
- expect(part.defaults.find((d) => d.label === "B").bars).toBe(5);
- expect(part.defaults.find((d) => d.label === "C").bars).toBe(6);
- expect(part.defaults.find((d) => d.label === "A").bars).toBe(4);
- });
- });