import { TestAPI } from 'vitest'; import { T as TestClientHandle } from '../client-B878xeAP.js'; import { C as CreateAppOptions } from '../server-Dckg4Vdr.js'; export { S as SeedName } from '../server-Dckg4Vdr.js'; import '../catalogue-B4eLL8Mi.js'; import '../elements-Bty6Qs_N.js'; import 'hono'; /** * Pre-baked test suites for scaffolded storefronts. * * Templates' `__tests__/*.test.ts` files are now ~5 lines each — they * import their `brand` and call `createBrandSuite` / `createCartFlowSuite` * / `createContractSuite`. One bug fix in this file → every template * picks it up on `bun update @cimplify/sdk`. * * // __tests__/brand.test.ts in any template: * import { createBrandSuite } from "@cimplify/sdk/testing/suite"; * import { brand } from "../lib/brand"; * createBrandSuite({ brand }); * * // __tests__/cart-flow.test.ts: * import { createCartFlowSuite } from "@cimplify/sdk/testing/suite"; * import { brand } from "../lib/brand"; * createCartFlowSuite({ seed: brand.mock.seed, businessId: brand.mock.businessId }); * * // __tests__/contract.test.ts: * import { createContractSuite } from "@cimplify/sdk/testing/suite"; * import { brand } from "../lib/brand"; * createContractSuite({ seed: brand.mock.seed }); */ /** * Brand sanity suite. Catches: missing required fields, placeholder * strings shipped to prod, invalid email/url/locale/currency formats, * mismatched seed/businessId pairing. * * Pass `extend` to append custom cases inside the same describe block: * * createBrandSuite({ * brand, * extend: (it) => { * it("uses our merchant's currency", () => { * expect(brand.currency).toBe("GHS"); * }); * }, * }); */ declare function createBrandSuite(opts: { brand: unknown; label?: string; extend?: (it: TestAPI) => void; }): void; interface CartFlowOptions extends CreateAppOptions { /** Expected business ID — asserts cart responses match the merchant. */ businessId?: string; /** Override the describe() label. */ label?: string; /** Append custom cases inside the same describe block. Receives a `TestClientHandle` getter. */ extend?: (ctx: { getHandle: () => TestClientHandle; it: TestAPI; }) => void; } /** * Cart flow suite. Boots the in-process mock, exercises add/dedupe/remove * with shape assertions on every response. Catches: SDK ↔ mock contract * drift, missing fields on cart items, add-to-cart not persisting, * variant/payload silently dropped. */ declare function createCartFlowSuite(opts?: CartFlowOptions): void; interface ContractOptions extends CreateAppOptions { label?: string; extend?: (ctx: { getHandle: () => TestClientHandle; it: TestAPI; }) => void; } /** * Shape contract suite. Exercises the schemas against actual mock * traffic. Catches: outbound payloads dropping required fields, * inbound responses missing fields the storefront depends on. */ declare function createContractSuite(opts?: ContractOptions): void; export { createBrandSuite, createCartFlowSuite, createContractSuite };