/** * @module MockRule */ import { Explainable, OngoingRequest, CompletedRequest, Response } from "../types"; import { MatcherData } from "./matchers"; import { CompletionCheckerData } from "./completion-checkers"; import { HandlerData } from "./handlers"; export interface MockRule extends Explainable { id: string; matches: RequestMatcher; handleRequest: RequestHandler; isComplete?: RuleCompletionChecker; requests: Promise[]; } export interface MockRuleCtx { matchByPath?: boolean; matchByPartOfPath?: boolean; } export interface MockRuleData { matchers: MatcherData[]; handler: HandlerData; completionChecker?: CompletionCheckerData; } export interface RuleExplainable extends Explainable { explain(this: MockRule): string; } export interface RequestMatcher extends RuleExplainable { (request: OngoingRequest): boolean | Promise; } export interface RequestHandler extends RuleExplainable { (request: OngoingRequest, response: Response): Promise; } export interface RuleCompletionChecker extends RuleExplainable { (this: MockRule): boolean; }