There is a breaking in change in the `MatcherContext` that is passed to
matcher functions, so we now have `!!this.isNot` in a few places. The
same could happen to custom matcher in the wild.
```ts
// Old
{
isNot: boolean;
promise: string;
}
```
```ts
// New
{
isNot?: boolean;
promise?: string;
}
```
Fixes #23612.
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
/**
|
|
* Copyright Microsoft Corporation. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { expectTypes, callLogText } from '../util';
|
|
import { matcherHint } from './matcherHint';
|
|
import { currentExpectTimeout } from '../common/globals';
|
|
import type { ExpectMatcherContext } from './expect';
|
|
|
|
export async function toBeTruthy(
|
|
this: ExpectMatcherContext,
|
|
matcherName: string,
|
|
receiver: any,
|
|
receiverType: string,
|
|
query: (isNot: boolean, timeout: number) => Promise<{ matches: boolean, log?: string[], received?: any, timedOut?: boolean }>,
|
|
options: { timeout?: number } = {},
|
|
) {
|
|
expectTypes(receiver, [receiverType], matcherName);
|
|
|
|
const matcherOptions = {
|
|
isNot: this.isNot,
|
|
promise: this.promise,
|
|
};
|
|
|
|
const timeout = currentExpectTimeout(options);
|
|
|
|
const { matches, log, timedOut } = await query(!!this.isNot, timeout);
|
|
|
|
const message = () => {
|
|
return matcherHint(this, matcherName, undefined, '', matcherOptions, timedOut ? timeout : undefined) + callLogText(log);
|
|
};
|
|
|
|
return { message, pass: matches };
|
|
}
|