UNPKG

@accounter/server

Version:
71 lines (70 loc) 2.24 kB
/** * Fixture validation logic * * Validates fixture referential integrity and required fields before insertion. * Ensures that all foreign key references point to entities that exist within * the fixture, preventing database constraint violations. * * @see packages/server/src/__tests__/helpers/fixture-types.ts for fixture structure * @see packages/server/src/__tests__/helpers/fixture-loader.ts for insertion logic */ import type { Fixture } from './fixture-types.js'; /** * Validation result for successful validation */ export interface ValidationSuccess { ok: true; } /** * Validation result for failed validation */ export interface ValidationFailure { ok: false; errors: string[]; } /** * Result of fixture validation */ export type ValidationResult = ValidationSuccess | ValidationFailure; /** * Validate a fixture for referential integrity and required fields * * Checks: * 1. All charge references are valid (transactions → charges, documents → charges) * 2. All business references are valid (charges → businesses, transactions → businesses, documents → businesses) * 3. All account references are valid (transactions → accounts) * 4. All tax category references are valid (charges → tax categories) * 5. Required fields are present * * @param fixture - The fixture to validate * @returns Validation result with ok=true or ok=false with error list * * @example * ```typescript * const result = validateFixture(expenseScenarioA); * if (!result.ok) { * console.error('Validation errors:', result.errors); * throw new Error('Invalid fixture'); * } * ``` */ export declare function validateFixture(fixture: Fixture): ValidationResult; /** * Validate a fixture and throw if invalid * * Convenience wrapper around validateFixture that throws an error * with a formatted message if validation fails. * * @param fixture - The fixture to validate * @throws {Error} If validation fails * * @example * ```typescript * // Throws if invalid * assertValidFixture(expenseScenarioA); * * // Continues if valid * await insertFixture(client, expenseScenarioA); * ``` */ export declare function assertValidFixture(fixture: Fixture): asserts fixture is Fixture;