/** * ABAP Unit test-class scaffolding — the "day 2" consultant task. * * Given class sources, generate the local test-class include * (`.clas.testclasses.abap`) with one skeleton test method per public * method: setup instantiates the CUT, every test method fails loudly with a * TODO so a generated-but-empty test can never masquerade as coverage. * * Same honesty tiering as the RAP scaffolder: generated code is round-tripped * through abaplint (together with the class under test) before it is returned. * Skeletons are syntax-validated structure — the given/when/then substance is * the developer's (or the agent's) job, and the fail( ) markers enforce that. */ import type { AbapSource, AbapVersion, Finding } from "./engine.js"; export interface UnitTestFile { /** abapGit-style filename, e.g. "zcl_travel.clas.testclasses.abap". */ filename: string; content: string; /** Global class the tests target. */ forClass: string; /** Same tiering as scaffold_rap_bo: "abaplint" = parser round-tripped. */ validated: "abaplint"; } export interface UnitTestResult { files: UnitTestFile[]; /** Classes that were skipped and why (interfaces-only files, FOR TESTING classes, …). */ skipped: { object: string; reason: string; }[]; nextSteps: string[]; /** abaplint findings on the generated code — empty on a clean round-trip. */ validationIssues: Finding[]; } export declare function scaffoldAbapUnit(files: AbapSource[], abapVersion?: AbapVersion): UnitTestResult;