mirror of
https://github.com/grafana/grafana.git
synced 2024-11-29 04:04:00 -06:00
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
|
import { matcherHint, printExpected, printReceived } from 'jest-matcher-utils';
|
||
|
import { OBSERVABLE_TEST_TIMEOUT_IN_MS } from './types';
|
||
|
import { asapScheduler, Observable, Subscription, timer } from 'rxjs';
|
||
|
|
||
|
export function forceObservableCompletion(subscription: Subscription, resolve: (args: any) => void) {
|
||
|
const timeoutObservable = timer(OBSERVABLE_TEST_TIMEOUT_IN_MS, asapScheduler);
|
||
|
|
||
|
subscription.add(
|
||
|
timeoutObservable.subscribe(() => {
|
||
|
subscription.unsubscribe();
|
||
|
resolve({
|
||
|
pass: false,
|
||
|
message: () =>
|
||
|
`${matcherHint('.toEmitValues')}
|
||
|
|
||
|
Expected ${printReceived('Observable')} to be ${printExpected(
|
||
|
`completed within ${OBSERVABLE_TEST_TIMEOUT_IN_MS}ms`
|
||
|
)} but it did not.`,
|
||
|
});
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export function expectObservableToBeDefined(received: any): jest.CustomMatcherResult | null {
|
||
|
if (received) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
pass: false,
|
||
|
message: () => `${matcherHint('.toEmitValues')}
|
||
|
|
||
|
Expected ${printReceived(received)} to be ${printExpected('defined')}.`,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export function expectObservableToBeObservable(received: any): jest.CustomMatcherResult | null {
|
||
|
if (received instanceof Observable) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
pass: false,
|
||
|
message: () => `${matcherHint('.toEmitValues')}
|
||
|
|
||
|
Expected ${printReceived(received)} to be ${printExpected('an Observable')}.`,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export function expectObservable(received: any): jest.CustomMatcherResult | null {
|
||
|
const toBeDefined = expectObservableToBeDefined(received);
|
||
|
if (toBeDefined) {
|
||
|
return toBeDefined;
|
||
|
}
|
||
|
|
||
|
const toBeObservable = expectObservableToBeObservable(received);
|
||
|
if (toBeObservable) {
|
||
|
return toBeObservable;
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|