UNPKG

jest-jasmine2

Version:
428 lines (392 loc) 12.2 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import {AssertionError} from 'assert'; import * as Process from 'process'; import {JestEnvironment} from '@jest/environment'; import {AsymmetricMatchers} from '@jest/expect'; import {FailedAssertion, Status, TestResult} from '@jest/test-result'; import {Circus, Config} from '@jest/types'; import Runtime from 'jest-runtime'; declare interface AssertionErrorWithStack extends AssertionError { stack: string; } declare type Attributes = { id: string; resultCallback: (result: Spec['result']) => void; description: Circus.TestNameLike; throwOnExpectationFailure: unknown; getTestPath: () => string; queueableFn: QueueableFn; beforeAndAfterFns: () => { befores: Array<QueueableFn>; afters: Array<QueueableFn>; }; userContext: () => unknown; onStart: (context: Spec) => void; getSpecName: (spec: Spec) => string; queueRunnerFactory: typeof queueRunner; }; declare type Attributes_2 = { id: string; parentSuite?: Suite; description: Circus.TestNameLike; throwOnExpectationFailure?: boolean; getTestPath: () => string; }; declare class CallTracker { track: (context: Context) => void; any: () => boolean; count: () => number; argsFor: (index: number) => Array<unknown>; all: () => Array<Context>; allArgs: () => Array<unknown>; first: () => Context; mostRecent: () => Context; reset: () => void; constructor(); } /** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ declare type Context = { object: unknown; args: Array<unknown>; returnValue?: unknown; }; declare function createSpy(name: string, originalFn: Fn): Spy; declare interface DoneFn { (error?: any): void; fail: (error: Error) => void; } declare class ExpectationFailed extends Error {} declare function expectationResultFactory( options: Options, initError?: Error, ): FailedAssertion; declare interface Fn extends Record<string, unknown> { (): unknown; } export declare type Jasmine = { _DEFAULT_TIMEOUT_INTERVAL: number; DEFAULT_TIMEOUT_INTERVAL: number; currentEnv_: ReturnType<typeof jasmineEnv>['prototype']; getEnv: () => ReturnType<typeof jasmineEnv>['prototype']; createSpy: typeof createSpy; Env: ReturnType<typeof jasmineEnv>; JsApiReporter: typeof JsApiReporter; ReportDispatcher: typeof ReportDispatcher; Spec: typeof Spec; SpyRegistry: typeof SpyRegistry; Suite: typeof Suite; Timer: typeof Timer; version: string; testPath: string; addMatchers: (matchers: JasmineMatchersObject) => void; } & AsymmetricMatchers & { process: typeof Process; }; declare function jasmine2( globalConfig: Config.GlobalConfig, config: Config.ProjectConfig, environment: JestEnvironment, runtime: Runtime, testPath: string, ): Promise<TestResult>; export default jasmine2; declare function jasmineEnv(j$: Jasmine): new () => { specFilter: (spec: Spec) => boolean; catchExceptions: (value: unknown) => boolean; throwOnExpectationFailure: (value: unknown) => void; catchingExceptions: () => boolean; topSuite: () => Suite; fail: (error: Error | AssertionErrorWithStack) => void; pending: (message: string) => void; afterAll: (afterAllFunction: QueueableFn['fn'], timeout?: number) => void; fit: ( description: Circus.TestNameLike, fn: QueueableFn['fn'], timeout?: number, ) => Spec; throwingExpectationFailures: () => boolean; randomizeTests: (value: unknown) => void; randomTests: () => boolean; seed: (value: unknown) => unknown; execute: (runnablesToRun?: Array<string>, suiteTree?: Suite) => Promise<void>; fdescribe: ( description: Circus.TestNameLike, specDefinitions: SpecDefinitionsFn, ) => Suite; spyOn: ( obj: Record<string, Spy>, methodName: string, accessType?: keyof PropertyDescriptor, ) => Spy; beforeEach: (beforeEachFunction: QueueableFn['fn'], timeout?: number) => void; afterEach: (afterEachFunction: QueueableFn['fn'], timeout?: number) => void; clearReporters: () => void; addReporter: (reporterToAdd: Reporter) => void; it: ( description: Circus.TestNameLike, fn: QueueableFn['fn'], timeout?: number, ) => Spec; xdescribe: ( description: Circus.TestNameLike, specDefinitions: SpecDefinitionsFn, ) => Suite; xit: ( description: Circus.TestNameLike, fn: QueueableFn['fn'], timeout?: number, ) => Spec; beforeAll: (beforeAllFunction: QueueableFn['fn'], timeout?: number) => void; todo: () => Spec; provideFallbackReporter: (reporterToAdd: Reporter) => void; allowRespy: (allow: boolean) => void; describe: ( description: Circus.TestNameLike, specDefinitions: SpecDefinitionsFn, ) => Suite; }; declare type JasmineMatcher = { (matchersUtil: unknown, context: unknown): JasmineMatcher; compare(...args: Array<unknown>): unknown; negativeCompare(...args: Array<unknown>): unknown; }; declare type JasmineMatchersObject = { [id: string]: JasmineMatcher; }; declare class JsApiReporter implements Reporter { started: boolean; finished: boolean; runDetails: RunDetails; jasmineStarted: (runDetails: RunDetails) => void; jasmineDone: (runDetails: RunDetails) => void; status: () => unknown; executionTime: () => unknown; suiteStarted: (result: SuiteResult) => void; suiteDone: (result: SuiteResult) => void; suiteResults: (index: number, length: number) => Array<SuiteResult>; suites: () => Record<string, SuiteResult>; specResults: (index: number, length: number) => Array<SpecResult>; specDone: (result: SpecResult) => void; specs: () => Array<SpecResult>; specStarted: (spec: SpecResult) => void; constructor(options: {timer?: Timer}); } declare type Options = { matcherName: string; passed: boolean; actual?: any; error?: any; expected?: any; message?: string | null; }; declare type Options_2 = { clearTimeout: (typeof globalThis)['clearTimeout']; fail: (error: Error) => void; onException: (error: Error) => void; queueableFns: Array<QueueableFn>; setTimeout: (typeof globalThis)['setTimeout']; userContext: unknown; }; declare type PromiseCallback = | (() => void | PromiseLike<void>) | undefined | null; declare type QueueableFn = { fn: (done: DoneFn) => void; timeout?: () => number; initError?: Error; }; declare function queueRunner(options: Options_2): PromiseLike<void> & { cancel: () => void; catch: (onRejected?: PromiseCallback) => Promise<void>; }; declare class ReportDispatcher implements Reporter { addReporter: (reporter: Reporter) => void; provideFallbackReporter: (reporter: Reporter) => void; clearReporters: () => void; jasmineDone: (runDetails: RunDetails) => void; jasmineStarted: (runDetails: RunDetails) => void; specDone: (result: SpecResult) => void; specStarted: (spec: SpecResult) => void; suiteDone: (result: SuiteResult) => void; suiteStarted: (result: SuiteResult) => void; constructor(methods: Array<keyof Reporter>); } declare type Reporter = { jasmineDone: (runDetails: RunDetails) => void; jasmineStarted: (runDetails: RunDetails) => void; specDone: (result: SpecResult) => void; specStarted: (spec: SpecResult) => void; suiteDone: (result: SuiteResult) => void; suiteStarted: (result: SuiteResult) => void; }; declare type RunDetails = { totalSpecsDefined?: number; failedExpectations?: SuiteResult['failedExpectations']; }; declare class Spec { id: string; description: string; resultCallback: (result: SpecResult) => void; queueableFn: QueueableFn; beforeAndAfterFns: () => { befores: Array<QueueableFn>; afters: Array<QueueableFn>; }; userContext: () => unknown; onStart: (spec: Spec) => void; getSpecName: (spec: Spec) => string; queueRunnerFactory: typeof queueRunner; throwOnExpectationFailure: boolean; initError: Error; result: SpecResult; disabled?: boolean; currentRun?: ReturnType<typeof queueRunner>; markedTodo?: boolean; markedPending?: boolean; expand?: boolean; static pendingSpecExceptionMessage: string; static isPendingSpecException(e: Error): boolean; constructor(attrs: Attributes); addExpectationResult(passed: boolean, data: Options, isError?: boolean): void; execute(onComplete?: () => void, enabled?: boolean): void; cancel(): void; onException(error: ExpectationFailed | AssertionErrorWithStack): void; disable(): void; pend(message?: string): void; todo(): void; getResult(): SpecResult; status( enabled?: boolean, ): 'todo' | 'passed' | 'failed' | 'pending' | 'disabled'; isExecutable(): boolean; getFullName(): string; isAssertionError(error: Error): boolean; } declare type SpecDefinitionsFn = () => void; declare type SpecResult = { id: string; description: string; fullName: string; duration?: number; failedExpectations: Array<FailedAssertion>; testPath: string; passedExpectations: Array<ReturnType<typeof expectationResultFactory>>; pendingReason: string; status: Status; __callsite?: { getColumnNumber: () => number; getLineNumber: () => number; }; }; declare interface Spy extends Record<string, any> { (this: Record<string, unknown>, ...args: Array<any>): unknown; and: SpyStrategy; calls: CallTracker; restoreObjectToOriginalState?: () => void; } declare class SpyRegistry { allowRespy: (allow: unknown) => void; spyOn: ( obj: Record<string, Spy>, methodName: string, accessType?: keyof PropertyDescriptor, ) => Spy; clearSpies: () => void; respy: unknown; private readonly _spyOnProperty; constructor({currentSpies}?: {currentSpies?: () => Array<Spy>}); } /** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ declare class SpyStrategy { identity: () => string; exec: (...args: Array<any>) => unknown; callThrough: () => unknown; returnValue: (value: unknown) => unknown; returnValues: () => unknown; throwError: (something: string | Error) => unknown; callFake: (fn: Function) => unknown; stub: (fn: Function) => unknown; constructor({ name, fn, getSpy, }?: { name?: string; fn?: Function; getSpy?: () => unknown; }); } declare class Suite { id: string; parentSuite?: Suite; description: Circus.TestNameLike; throwOnExpectationFailure: boolean; beforeFns: Array<QueueableFn>; afterFns: Array<QueueableFn>; beforeAllFns: Array<QueueableFn>; afterAllFns: Array<QueueableFn>; disabled: boolean; children: Array<Suite | Spec>; result: SuiteResult; sharedContext?: object; markedPending: boolean; markedTodo: boolean; isFocused: boolean; constructor(attrs: Attributes_2); getFullName(): string; disable(): void; pend(_message?: string): void; beforeEach(fn: QueueableFn): void; beforeAll(fn: QueueableFn): void; afterEach(fn: QueueableFn): void; afterAll(fn: QueueableFn): void; addChild(child: Suite | Spec): void; status(): 'failed' | 'pending' | 'disabled' | 'finished'; isExecutable(): boolean; canBeReentered(): boolean; getResult(): SuiteResult; sharedUserContext(): object; clonedSharedUserContext(): object; onException(...args: Parameters<Spec['onException']>): void; addExpectationResult(...args: Parameters<Spec['addExpectationResult']>): void; execute(..._args: Array<any>): void; } declare type SuiteResult = { id: string; description: string; fullName: string; failedExpectations: Array<ReturnType<typeof expectationResultFactory>>; testPath: string; status?: string; }; /** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ declare class Timer { start: () => void; elapsed: () => number; constructor(options?: {now?: () => number}); } export {};