@hayspec/spec
Version:
Core logic for Hayspec framework.
45 lines (44 loc) • 2.06 kB
TypeScript
import { Stage } from './stage';
import { Context } from './context';
declare type StageHandler<Data> = (stage: Stage<Data>) => (void | Promise<void>);
declare type ContextHandler<Data> = (context: Context<Data>, stage: Stage<Data>) => (void | Promise<void>);
interface PerformRecipes<Data> {
message: string;
handler?: ContextHandler<Data>;
spec?: Spec<Data>;
}
export declare class Spec<Data = {}> {
protected beforeHandlers: StageHandler<Data>[];
protected beforeEachHandlers: ContextHandler<Data>[];
protected afterHandlers: StageHandler<Data>[];
protected afterEachHandlers: ContextHandler<Data>[];
protected performRecipes: PerformRecipes<Data>[];
protected onlyEnabled: boolean;
protected _stage: Stage<Data>;
parent: Spec<Data>;
constructor(stage?: Stage<Data>, parent?: Spec<Data>);
set stage(s: Stage<Data>);
get stage(): Stage<Data>;
hasOnly(): boolean;
isRoot(): boolean;
before(handler: StageHandler<Data>, append?: boolean): this;
beforeEach(handler: ContextHandler<Data>, append?: boolean): this;
after(handler: StageHandler<Data>, append?: boolean): this;
afterEach(handler: ContextHandler<Data>, append?: boolean): this;
spec(message: string, spec: Spec<Data>): this;
test(message: string, handler: ContextHandler<Data>): this;
skip(message: string, handler?: ContextHandler<Data>): this;
only(message: string, handler: ContextHandler<Data>): this;
perform(): Promise<void>;
protected performBegin(): Promise<void>;
protected performEnd(): Promise<void>;
protected performSpec(recipe: PerformRecipes<Data>): Promise<void>;
protected performTest(recipe: PerformRecipes<Data>): Promise<void>;
protected performBefore(): Promise<void>;
protected performAfter(): Promise<void>;
protected performBeforeEach(context: Context<Data>): Promise<void>;
protected performAfterEach(context: Context<Data>): Promise<void>;
protected createStage(): Stage<Data>;
protected createContext(): Context<Data>;
}
export {};