wallet-core/node_modules/ava/index.js.flow
2017-12-27 19:34:16 +01:00

167 lines
4.8 KiB
Plaintext

/* @flow */
/**
* Misc Setup Types
*/
type PromiseLike<R> = {
then<U>(
onFulfill?: (value: R) => Promise<U> | U,
onReject?: (error: any) => Promise<U> | U
): Promise<U>;
}
type ObservableLike = {
subscribe(observer: (value: {}) => void): void;
};
type SpecialReturnTypes =
| PromiseLike<any>
| Iterator<any>
| ObservableLike;
type Constructor = Class<{
constructor(...args: Array<any>): any
}>;
type ErrorValidator =
| Constructor
| RegExp
| string
| ((error: any) => boolean);
/**
* Assertion Types
*/
type AssertContext = {
// Passing assertion.
pass(message?: string): void;
// Failing assertion.
fail(message?: string): void;
// Assert that value is truthy.
truthy(value: mixed, message?: string): void;
// Assert that value is falsy.
falsy(value: mixed, message?: string): void;
// Assert that value is true.
true(value: mixed, message?: string): void;
// Assert that value is false.
false(value: mixed, message?: string): void;
// Assert that value is equal to expected.
is<U>(value: U, expected: U, message?: string): void;
// Assert that value is not equal to expected.
not<U>(value: U, expected: U, message?: string): void;
// Assert that value is deep equal to expected.
deepEqual<U>(value: U, expected: U, message?: string): void;
// Assert that value is not deep equal to expected.
notDeepEqual<U>(value: U, expected: U, message?: string): void;
// Assert that function throws an error or promise rejects.
// @param error Can be a constructor, regex, error message or validation function.
throws: {
(value: PromiseLike<mixed>, error?: ErrorValidator, message?: string): Promise<any>;
(value: () => mixed, error?: ErrorValidator, message?: string): any;
};
// Assert that function doesn't throw an error or promise resolves.
notThrows: {
(value: PromiseLike<mixed>, message?: string): Promise<void>;
(value: () => mixed, message?: string): void;
};
// Assert that contents matches regex.
regex(contents: string, regex: RegExp, message?: string): void;
// Assert that contents matches a snapshot.
snapshot: ((contents: any, message?: string) => void) & ((contents: any, options: {id: string}, message?: string) => void);
// Assert that contents does not match regex.
notRegex(contents: string, regex: RegExp, message?: string): void;
// Assert that error is falsy.
ifError(error: any, message?: string): void;
};
/**
* Context Types
*/
type TestContext = AssertContext & {
title: string;
plan(count: number): void;
skip: AssertContext;
log(message: string): void;
};
type ContextualTestContext = TestContext & { context: any; };
type ContextualCallbackTestContext = TestContext & { context: any; end(): void; };
/**
* Test Implementations
*/
type TestFunction<T, R> = {
(t: T, ...args: Array<any>): R;
title?: (providedTitle: string, ...args: Array<any>) => string;
};
type TestImplementation<T, R> =
| TestFunction<T, R>
| Array<TestFunction<T, R>>;
type ContextualTest = TestImplementation<ContextualTestContext, SpecialReturnTypes | void>;
type ContextualCallbackTest = TestImplementation<ContextualCallbackTestContext, void>;
/**
* Method Types
*/
type ContextualTestMethod = {
( implementation: ContextualTest): void;
(name: string, implementation: ContextualTest): void;
serial : ContextualTestMethod;
before : ContextualTestMethod;
after : ContextualTestMethod;
skip : ContextualTestMethod;
todo : ContextualTestMethod;
failing : ContextualTestMethod;
only : ContextualTestMethod;
beforeEach : ContextualTestMethod;
afterEach : ContextualTestMethod;
cb : ContextualCallbackTestMethod;
always : ContextualTestMethod;
};
type ContextualCallbackTestMethod = {
( implementation: ContextualCallbackTest): void;
(name: string, implementation: ContextualCallbackTest): void;
serial : ContextualCallbackTestMethod;
before : ContextualCallbackTestMethod;
after : ContextualCallbackTestMethod;
skip : ContextualCallbackTestMethod;
todo : ContextualCallbackTestMethod;
failing : ContextualCallbackTestMethod;
only : ContextualCallbackTestMethod;
beforeEach : ContextualCallbackTestMethod;
afterEach : ContextualCallbackTestMethod;
cb : ContextualCallbackTestMethod;
always : ContextualCallbackTestMethod;
};
/**
* Public API
*/
declare module.exports: {
( run: ContextualTest, ...args: any): void;
(name: string, run: ContextualTest, ...args: any): void;
beforeEach : ContextualTestMethod;
afterEach : ContextualTestMethod;
serial : ContextualTestMethod;
before : ContextualTestMethod;
after : ContextualTestMethod;
skip : ContextualTestMethod;
todo : ContextualTestMethod;
failing : ContextualTestMethod;
only : ContextualTestMethod;
cb : ContextualCallbackTestMethod;
always : ContextualTestMethod;
};