@maklja90/chaijs-rxjs-observable-spy
Version:
ChaiJS extension for testing RxJS observables
250 lines • 12.3 kB
TypeScript
declare namespace Chai {
interface ObservableVerifyLanguageChains {
/**
* Starts a verification process of the tested observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @returns promise with received next values from the observable.
*/
verify: <T = unknown>() => Promise<T[]>;
}
interface ObservableSingleLanguageChains {
/**
* Expects to receive a single value from observable,
* then checks if the observable will end with a complete
* event and starts a verification process of the tested observable.
*
* @typeParam T - Type of value that is generated by the observable.
*
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns promise with received single next value from the observable.
*/
awaitSingle: <T = unknown>(stepName?: string) => Promise<T>;
}
interface ObservableLanguageChains {
/**
* Then the keyword has no functional purpose, it is just there for readability.
*
* @returns observable language chains for testing.
*/
then: ObservableLanguageChains;
/**
* Setup a flag for the library to use TestScheduler from 'rxjs/testing'.
* This is useful when we want to use virtual time instead of real time.
* Useful when using interval, delay...
*
* @returns observable language chains for testing.
*/
virtualTime: ObservableLanguageChains;
/**
* Next expected values from the observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param expectedValue - Expected next value.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
next: <T = unknown>(expectedValue: T, stepName?: string) => ObservableLanguageChains;
/**
* Expected next count to be received from the observable.
*
* @param expectedCount - Expected next count number.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for verification.
*/
nextCount: (expectedCount: number, stepName?: string) => ObservableVerifyLanguageChains;
/**
* Skip next n values received from the observable.
*
* @param expectedCount - Expected next count number.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
skipCount: (skipCount: number, stepName?: string) => ObservableLanguageChains;
/**
* Skip next values until the result of function {@link callback} is true.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param callback - Callback that will check if the current next values should be skipped.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
skipUntil: <T = unknown>(callback: (value: T, index: number) => boolean, stepName?: string) => ObservableLanguageChains;
/**
* Match the next value with a condition from the observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param callback - Callback that will validate next value.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
nextMatches: <T = unknown>(callback: (value: T, index: number) => boolean, stepName?: string) => ObservableLanguageChains;
/**
* Match the next value with a condition until the condition is satisfied from the observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param callback - Callback that will validate next value.
* @param untilCondition - Condition callback that indicates that validation is completed.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
nextMatchesUntil: <T = unknown>(callback: (value: T, index: number) => boolean, untilCondition: (value: T, index: number) => boolean, stepName?: string) => ObservableLanguageChains;
/**
* Consume the next value from the observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param callback - Callback that will consume next value.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
consumeNext: <T = unknown>(callback: (value: T, index: number) => void, stepName?: string) => ObservableLanguageChains;
/**
* Consume the next value from the observable until the true flag is returned by callback.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param callback - Callback that will consume next value.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
consumeNextUntil: <T = unknown>(callback: (value: T, index: number) => boolean, stepName?: string) => ObservableLanguageChains;
/**
* Expects observable to throw an error.
*
* @typeParam E - Type of error that will be thrown by the observable.
*
* @param expectedErrorType - Type of error.
* @param errorMessage - Error message.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
error: <E = unknown>(expectedErrorType: new (...args: never[]) => E, errorMessage: string, stepName?: string) => ObservableVerifyLanguageChains;
/**
* Consume error from the observable.
*
* @typeParam E - Type of error that will be thrown by the observable.
*
* @param consumeErrorCallback - Callback for error handling.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
consumeError: <E = unknown>(consumeErrorCallback: (error: E) => void, stepName?: string) => ObservableVerifyLanguageChains;
/**
* Expects observable to throw an error.
*
* @typeParam E - Type of error that will be thrown by the observable.
*
* @param expectedErrorType - Type of error.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
errorType: <E = unknown>(expectedErrorType: new (...args: never[]) => E, stepName?: string) => ObservableVerifyLanguageChains;
/**
* Expects observable to throw an error.
*
* @param errorMessage - Error message.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
errorMessage: (errorMessage: string, stepName?: string) => ObservableVerifyLanguageChains;
/**
* Check if the observable will end with a complete event.
*
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns observable language chains for testing.
*/
complete: (stepName?: string) => ObservableVerifyLanguageChains;
/**
* Check if the observable will end with a complete event and
* start a verification process of the tested observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns promise with received next values from the observable.
*/
verifyComplete: <T = unknown>(stepName?: string) => Promise<T[]>;
/**
* Ignores all next values received from the observable.
* Check if the observable will end with a complete event and
* start a verification process of the tested observable.
*
* @typeParam T - Type of values that are generated by the observable.
*
* @param callback - Optional callback that will receive next values.
* @param stepName - Optional parameter for customizing a step name.
* Useful for debugging purposes because it is going to be included in the error message.
*
* @returns promise with received next values from the observable.
*/
awaitComplete: <T = unknown>(callback?: null | ((value: T, index: number) => void), stepName?: string) => Promise<T[]>;
}
interface Assertion {
/**
* Usable only on RxJS Observables.
* This property contains a language chain keywords that are required in order to test observables.
*
* @param name - Optional name of the tested observable.
*
* @returns observable language chains for testing.
*/
observableSpy: (name?: string) => ObservableLanguageChains & ObservableSingleLanguageChains;
/**
* Usable only on RxJS Observables.
* This property contains a language chain keywords that are required in order to test observables.
*
* @param name - Optional name of the tested observable.
*
* @returns observable language chains for testing.
*/
oSpy: (name?: string) => ObservableLanguageChains & ObservableSingleLanguageChains;
/**
* Usable only on RxJS Observables.
* This property contains a language chain keywords that are required in order to test observables.
*
* @returns observable language chains for testing.
*/
emit: ObservableLanguageChains & ObservableSingleLanguageChains;
/**
* Check if the tested object is an instance of RxJS observable.
*/
observable: () => Assertion;
}
}
//# sourceMappingURL=index.d.ts.map