|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369 |
- 'use strict';
-
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.default = void 0;
-
- var _jestGetType = require('jest-get-type');
-
- var _jestMatcherUtils = require('jest-matcher-utils');
-
- var _jasmineUtils = require('./jasmineUtils');
-
- var _print = require('./print');
-
- var _utils = require('./utils');
-
- /**
- * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
-
- /* eslint-disable local/ban-types-eventually */
- // Omit colon and one or more spaces, so can call getLabelPrinter.
- const EXPECTED_LABEL = 'Expected';
- const RECEIVED_LABEL = 'Received';
- const EXPECTED_VALUE_LABEL = 'Expected value';
- const RECEIVED_VALUE_LABEL = 'Received value'; // The optional property of matcher context is true if undefined.
-
- const isExpand = expand => expand !== false;
-
- const toStrictEqualTesters = [
- _utils.iterableEquality,
- _utils.typeEquality,
- _utils.sparseArrayEquality
- ];
- const matchers = {
- toBe(received, expected) {
- const matcherName = 'toBe';
- const options = {
- comment: 'Object.is equality',
- isNot: this.isNot,
- promise: this.promise
- };
- const pass = Object.is(received, expected);
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}`
- : () => {
- const expectedType = (0, _jestGetType.getType)(expected);
- let deepEqualityName = null;
-
- if (expectedType !== 'map' && expectedType !== 'set') {
- // If deep equality passes when referential identity fails,
- // but exclude map and set until review of their equality logic.
- if (
- (0, _jasmineUtils.equals)(
- received,
- expected,
- toStrictEqualTesters,
- true
- )
- ) {
- deepEqualityName = 'toStrictEqual';
- } else if (
- (0, _jasmineUtils.equals)(received, expected, [
- _utils.iterableEquality
- ])
- ) {
- deepEqualityName = 'toEqual';
- }
- }
-
- return (
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- (deepEqualityName !== null
- ? (0, _jestMatcherUtils.DIM_COLOR)(
- `If it should pass with deep equality, replace "${matcherName}" with "${deepEqualityName}"`
- ) + '\n\n'
- : '') +
- (0, _jestMatcherUtils.printDiffOrStringify)(
- expected,
- received,
- EXPECTED_LABEL,
- RECEIVED_LABEL,
- isExpand(this.expand)
- )
- );
- }; // Passing the actual and expected objects so that a custom reporter
- // could access them, for example in order to display a custom visual diff,
- // or create a different error message
-
- return {
- actual: received,
- expected,
- message,
- name: matcherName,
- pass
- };
- },
-
- toBeCloseTo(received, expected, precision = 2) {
- const matcherName = 'toBeCloseTo';
- const secondArgument = arguments.length === 3 ? 'precision' : undefined;
- const isNot = this.isNot;
- const options = {
- isNot,
- promise: this.promise,
- secondArgument,
- secondArgumentColor: arg => arg
- };
-
- if (typeof expected !== 'number') {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} value must be a number`,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expected,
- _jestMatcherUtils.printExpected
- )
- )
- );
- }
-
- if (typeof received !== 'number') {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must be a number`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- let pass = false;
- let expectedDiff = 0;
- let receivedDiff = 0;
-
- if (received === Infinity && expected === Infinity) {
- pass = true; // Infinity - Infinity is NaN
- } else if (received === -Infinity && expected === -Infinity) {
- pass = true; // -Infinity - -Infinity is NaN
- } else {
- expectedDiff = Math.pow(10, -precision) / 2;
- receivedDiff = Math.abs(expected - received);
- pass = receivedDiff < expectedDiff;
- }
-
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
- (receivedDiff === 0
- ? ''
- : `Received: ${(0, _jestMatcherUtils.printReceived)(
- received
- )}\n` +
- '\n' +
- (0, _print.printCloseTo)(
- receivedDiff,
- expectedDiff,
- precision,
- isNot
- ))
- : () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected: ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}\n` +
- '\n' +
- (0, _print.printCloseTo)(
- receivedDiff,
- expectedDiff,
- precision,
- isNot
- );
- return {
- message,
- pass
- };
- },
-
- toBeDefined(received, expected) {
- const matcherName = 'toBeDefined';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
- const pass = received !== void 0;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
- '\n\n' +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeFalsy(received, expected) {
- const matcherName = 'toBeFalsy';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
- const pass = !received;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
- '\n\n' +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeGreaterThan(received, expected) {
- const matcherName = 'toBeGreaterThan';
- const isNot = this.isNot;
- const options = {
- isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNumbers)(
- received,
- expected,
- matcherName,
- options
- );
- const pass = received > expected;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected:${isNot ? ' not' : ''} > ${(0, _jestMatcherUtils.printExpected)(
- expected
- )}\n` +
- `Received:${isNot ? ' ' : ''} ${(0, _jestMatcherUtils.printReceived)(
- received
- )}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeGreaterThanOrEqual(received, expected) {
- const matcherName = 'toBeGreaterThanOrEqual';
- const isNot = this.isNot;
- const options = {
- isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNumbers)(
- received,
- expected,
- matcherName,
- options
- );
- const pass = received >= expected;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected:${isNot ? ' not' : ''} >= ${(0,
- _jestMatcherUtils.printExpected)(expected)}\n` +
- `Received:${isNot ? ' ' : ''} ${(0,
- _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeInstanceOf(received, expected) {
- const matcherName = 'toBeInstanceOf';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
-
- if (typeof expected !== 'function') {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} value must be a function`,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expected,
- _jestMatcherUtils.printExpected
- )
- )
- );
- }
-
- const pass = received instanceof expected;
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- (0, _print.printExpectedConstructorNameNot)(
- 'Expected constructor',
- expected
- ) +
- (typeof received.constructor === 'function' &&
- received.constructor !== expected
- ? (0, _print.printReceivedConstructorNameNot)(
- 'Received constructor',
- received.constructor,
- expected
- )
- : '')
- : () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- (0, _print.printExpectedConstructorName)(
- 'Expected constructor',
- expected
- ) +
- ((0, _jestGetType.isPrimitive)(received) ||
- Object.getPrototypeOf(received) === null
- ? `\nReceived value has no prototype\nReceived value: ${(0,
- _jestMatcherUtils.printReceived)(received)}`
- : typeof received.constructor !== 'function'
- ? `\nReceived value: ${(0, _jestMatcherUtils.printReceived)(
- received
- )}`
- : (0, _print.printReceivedConstructorName)(
- 'Received constructor',
- received.constructor
- ));
- return {
- message,
- pass
- };
- },
-
- toBeLessThan(received, expected) {
- const matcherName = 'toBeLessThan';
- const isNot = this.isNot;
- const options = {
- isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNumbers)(
- received,
- expected,
- matcherName,
- options
- );
- const pass = received < expected;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected:${isNot ? ' not' : ''} < ${(0, _jestMatcherUtils.printExpected)(
- expected
- )}\n` +
- `Received:${isNot ? ' ' : ''} ${(0, _jestMatcherUtils.printReceived)(
- received
- )}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeLessThanOrEqual(received, expected) {
- const matcherName = 'toBeLessThanOrEqual';
- const isNot = this.isNot;
- const options = {
- isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNumbers)(
- received,
- expected,
- matcherName,
- options
- );
- const pass = received <= expected;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected:${isNot ? ' not' : ''} <= ${(0,
- _jestMatcherUtils.printExpected)(expected)}\n` +
- `Received:${isNot ? ' ' : ''} ${(0,
- _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeNaN(received, expected) {
- const matcherName = 'toBeNaN';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
- const pass = Number.isNaN(received);
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
- '\n\n' +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeNull(received, expected) {
- const matcherName = 'toBeNull';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
- const pass = received === null;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
- '\n\n' +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeTruthy(received, expected) {
- const matcherName = 'toBeTruthy';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
- const pass = !!received;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
- '\n\n' +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toBeUndefined(received, expected) {
- const matcherName = 'toBeUndefined';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
- (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options);
- const pass = received === void 0;
-
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) +
- '\n\n' +
- `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`;
-
- return {
- message,
- pass
- };
- },
-
- toContain(received, expected) {
- const matcherName = 'toContain';
- const isNot = this.isNot;
- const options = {
- comment: 'indexOf',
- isNot,
- promise: this.promise
- };
-
- if (received == null) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must not be null nor undefined`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- if (typeof received === 'string') {
- const wrongTypeErrorMessage = `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} value must be a string if ${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value is a string`;
-
- if (typeof expected !== 'string') {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- received,
- String(expected),
- options
- ),
- wrongTypeErrorMessage,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expected,
- _jestMatcherUtils.printExpected
- ) +
- '\n' +
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- const index = received.indexOf(String(expected));
- const pass = index !== -1;
-
- const message = () => {
- const labelExpected = `Expected ${
- typeof expected === 'string' ? 'substring' : 'value'
- }`;
- const labelReceived = 'Received string';
- const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
- labelExpected,
- labelReceived
- );
- return (
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
- _jestMatcherUtils.printExpected)(expected)}\n` +
- `${printLabel(labelReceived)}${isNot ? ' ' : ''}${
- isNot
- ? (0, _print.printReceivedStringContainExpectedSubstring)(
- received,
- index,
- String(expected).length
- )
- : (0, _jestMatcherUtils.printReceived)(received)
- }`
- );
- };
-
- return {
- message,
- pass
- };
- }
-
- const indexable = Array.from(received);
- const index = indexable.indexOf(expected);
- const pass = index !== -1;
-
- const message = () => {
- const labelExpected = 'Expected value';
- const labelReceived = `Received ${(0, _jestGetType.getType)(received)}`;
- const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
- labelExpected,
- labelReceived
- );
- return (
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
- _jestMatcherUtils.printExpected)(expected)}\n` +
- `${printLabel(labelReceived)}${isNot ? ' ' : ''}${
- isNot && Array.isArray(received)
- ? (0, _print.printReceivedArrayContainExpectedItem)(received, index)
- : (0, _jestMatcherUtils.printReceived)(received)
- }` +
- (!isNot &&
- indexable.findIndex(item =>
- (0, _jasmineUtils.equals)(item, expected, [_utils.iterableEquality])
- ) !== -1
- ? `\n\n${_jestMatcherUtils.SUGGEST_TO_CONTAIN_EQUAL}`
- : '')
- );
- };
-
- return {
- message,
- pass
- };
- },
-
- toContainEqual(received, expected) {
- const matcherName = 'toContainEqual';
- const isNot = this.isNot;
- const options = {
- comment: 'deep equality',
- isNot,
- promise: this.promise
- };
-
- if (received == null) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must not be null nor undefined`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- const index = Array.from(received).findIndex(item =>
- (0, _jasmineUtils.equals)(item, expected, [_utils.iterableEquality])
- );
- const pass = index !== -1;
-
- const message = () => {
- const labelExpected = 'Expected value';
- const labelReceived = `Received ${(0, _jestGetType.getType)(received)}`;
- const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
- labelExpected,
- labelReceived
- );
- return (
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
- _jestMatcherUtils.printExpected)(expected)}\n` +
- `${printLabel(labelReceived)}${isNot ? ' ' : ''}${
- isNot && Array.isArray(received)
- ? (0, _print.printReceivedArrayContainExpectedItem)(received, index)
- : (0, _jestMatcherUtils.printReceived)(received)
- }`
- );
- };
-
- return {
- message,
- pass
- };
- },
-
- toEqual(received, expected) {
- const matcherName = 'toEqual';
- const options = {
- comment: 'deep equality',
- isNot: this.isNot,
- promise: this.promise
- };
- const pass = (0, _jasmineUtils.equals)(received, expected, [
- _utils.iterableEquality
- ]);
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
- ((0, _jestMatcherUtils.stringify)(expected) !==
- (0, _jestMatcherUtils.stringify)(received)
- ? `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`
- : '')
- : () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- (0, _jestMatcherUtils.printDiffOrStringify)(
- expected,
- received,
- EXPECTED_LABEL,
- RECEIVED_LABEL,
- isExpand(this.expand)
- ); // Passing the actual and expected objects so that a custom reporter
- // could access them, for example in order to display a custom visual diff,
- // or create a different error message
-
- return {
- actual: received,
- expected,
- message,
- name: matcherName,
- pass
- };
- },
-
- toHaveLength(received, expected) {
- const matcherName = 'toHaveLength';
- const isNot = this.isNot;
- const options = {
- isNot,
- promise: this.promise
- };
-
- if (
- typeof (received === null || received === void 0
- ? void 0
- : received.length) !== 'number'
- ) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must have a length property whose value must be a number`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- (0, _jestMatcherUtils.ensureExpectedIsNonNegativeInteger)(
- expected,
- matcherName,
- options
- );
- const pass = received.length === expected;
-
- const message = () => {
- const labelExpected = 'Expected length';
- const labelReceivedLength = 'Received length';
- const labelReceivedValue = `Received ${(0, _jestGetType.getType)(
- received
- )}`;
- const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
- labelExpected,
- labelReceivedLength,
- labelReceivedValue
- );
- return (
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${(0,
- _jestMatcherUtils.printExpected)(expected)}\n` +
- (isNot
- ? ''
- : `${printLabel(labelReceivedLength)}${(0,
- _jestMatcherUtils.printReceived)(received.length)}\n`) +
- `${printLabel(labelReceivedValue)}${isNot ? ' ' : ''}${(0,
- _jestMatcherUtils.printReceived)(received)}`
- );
- };
-
- return {
- message,
- pass
- };
- },
-
- toHaveProperty(received, expectedPath, expectedValue) {
- const matcherName = 'toHaveProperty';
- const expectedArgument = 'path';
- const hasValue = arguments.length === 3;
- const options = {
- isNot: this.isNot,
- promise: this.promise,
- secondArgument: hasValue ? 'value' : ''
- };
-
- if (received === null || received === undefined) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- expectedArgument,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must not be null nor undefined`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- const expectedPathType = (0, _jestGetType.getType)(expectedPath);
-
- if (expectedPathType !== 'string' && expectedPathType !== 'array') {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- expectedArgument,
- options
- ),
- `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} path must be a string or array`,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expectedPath,
- _jestMatcherUtils.printExpected
- )
- )
- );
- }
-
- const expectedPathLength =
- typeof expectedPath === 'string'
- ? expectedPath.split('.').length
- : expectedPath.length;
-
- if (expectedPathType === 'array' && expectedPathLength === 0) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- expectedArgument,
- options
- ),
- `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} path must not be an empty array`,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expectedPath,
- _jestMatcherUtils.printExpected
- )
- )
- );
- }
-
- const result = (0, _utils.getPath)(received, expectedPath);
- const {lastTraversedObject, hasEndProp} = result;
- const receivedPath = result.traversedPath;
- const hasCompletePath = receivedPath.length === expectedPathLength;
- const receivedValue = hasCompletePath ? result.value : lastTraversedObject;
- const pass = hasValue
- ? (0, _jasmineUtils.equals)(result.value, expectedValue, [
- _utils.iterableEquality
- ])
- : Boolean(hasEndProp); // theoretically undefined if empty path
- // Remove type cast if we rewrite getPath as iterative algorithm.
- // Delete this unique report if future breaking change
- // removes the edge case that expected value undefined
- // also matches absence of a property with the key path.
-
- if (pass && !hasCompletePath) {
- const message = () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- expectedArgument,
- options
- ) +
- '\n\n' +
- `Expected path: ${(0, _jestMatcherUtils.printExpected)(
- expectedPath
- )}\n` +
- `Received path: ${(0, _jestMatcherUtils.printReceived)(
- expectedPathType === 'array' || receivedPath.length === 0
- ? receivedPath
- : receivedPath.join('.')
- )}\n\n` +
- `Expected value: not ${(0, _jestMatcherUtils.printExpected)(
- expectedValue
- )}\n` +
- `Received value: ${(0, _jestMatcherUtils.printReceived)(
- receivedValue
- )}\n\n` +
- (0, _jestMatcherUtils.DIM_COLOR)(
- 'Because a positive assertion passes for expected value undefined if the property does not exist, this negative assertion fails unless the property does exist and has a defined value'
- );
-
- return {
- message,
- pass
- };
- }
-
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- expectedArgument,
- options
- ) +
- '\n\n' +
- (hasValue
- ? `Expected path: ${(0, _jestMatcherUtils.printExpected)(
- expectedPath
- )}\n\n` +
- `Expected value: not ${(0, _jestMatcherUtils.printExpected)(
- expectedValue
- )}` +
- ((0, _jestMatcherUtils.stringify)(expectedValue) !==
- (0, _jestMatcherUtils.stringify)(receivedValue)
- ? `\nReceived value: ${(0, _jestMatcherUtils.printReceived)(
- receivedValue
- )}`
- : '')
- : `Expected path: not ${(0, _jestMatcherUtils.printExpected)(
- expectedPath
- )}\n\n` +
- `Received value: ${(0, _jestMatcherUtils.printReceived)(
- receivedValue
- )}`)
- : () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- expectedArgument,
- options
- ) +
- '\n\n' +
- `Expected path: ${(0, _jestMatcherUtils.printExpected)(
- expectedPath
- )}\n` +
- (hasCompletePath
- ? '\n' +
- (0, _jestMatcherUtils.printDiffOrStringify)(
- expectedValue,
- receivedValue,
- EXPECTED_VALUE_LABEL,
- RECEIVED_VALUE_LABEL,
- isExpand(this.expand)
- )
- : `Received path: ${(0, _jestMatcherUtils.printReceived)(
- expectedPathType === 'array' || receivedPath.length === 0
- ? receivedPath
- : receivedPath.join('.')
- )}\n\n` +
- (hasValue
- ? `Expected value: ${(0, _jestMatcherUtils.printExpected)(
- expectedValue
- )}\n`
- : '') +
- `Received value: ${(0, _jestMatcherUtils.printReceived)(
- receivedValue
- )}`);
- return {
- message,
- pass
- };
- },
-
- toMatch(received, expected) {
- const matcherName = 'toMatch';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
-
- if (typeof received !== 'string') {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must be a string`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- if (
- !(typeof expected === 'string') &&
- !(expected && typeof expected.test === 'function')
- ) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} value must be a string or regular expression`,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expected,
- _jestMatcherUtils.printExpected
- )
- )
- );
- }
-
- const pass =
- typeof expected === 'string'
- ? received.includes(expected)
- : new RegExp(expected).test(received);
- const message = pass
- ? () =>
- typeof expected === 'string'
- ? (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected substring: not ${(0, _jestMatcherUtils.printExpected)(
- expected
- )}\n` +
- `Received string: ${(0,
- _print.printReceivedStringContainExpectedSubstring)(
- received,
- received.indexOf(expected),
- expected.length
- )}`
- : (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected pattern: not ${(0, _jestMatcherUtils.printExpected)(
- expected
- )}\n` +
- `Received string: ${(0,
- _print.printReceivedStringContainExpectedResult)(
- received,
- typeof expected.exec === 'function'
- ? expected.exec(received)
- : null
- )}`
- : () => {
- const labelExpected = `Expected ${
- typeof expected === 'string' ? 'substring' : 'pattern'
- }`;
- const labelReceived = 'Received string';
- const printLabel = (0, _jestMatcherUtils.getLabelPrinter)(
- labelExpected,
- labelReceived
- );
- return (
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `${printLabel(labelExpected)}${(0, _jestMatcherUtils.printExpected)(
- expected
- )}\n` +
- `${printLabel(labelReceived)}${(0, _jestMatcherUtils.printReceived)(
- received
- )}`
- );
- };
- return {
- message,
- pass
- };
- },
-
- toMatchObject(received, expected) {
- const matcherName = 'toMatchObject';
- const options = {
- isNot: this.isNot,
- promise: this.promise
- };
-
- if (typeof received !== 'object' || received === null) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
- 'received'
- )} value must be a non-null object`,
- (0, _jestMatcherUtils.printWithType)(
- 'Received',
- received,
- _jestMatcherUtils.printReceived
- )
- )
- );
- }
-
- if (typeof expected !== 'object' || expected === null) {
- throw new Error(
- (0, _jestMatcherUtils.matcherErrorMessage)(
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ),
- `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
- 'expected'
- )} value must be a non-null object`,
- (0, _jestMatcherUtils.printWithType)(
- 'Expected',
- expected,
- _jestMatcherUtils.printExpected
- )
- )
- );
- }
-
- const pass = (0, _jasmineUtils.equals)(received, expected, [
- _utils.iterableEquality,
- _utils.subsetEquality
- ]);
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}` +
- ((0, _jestMatcherUtils.stringify)(expected) !==
- (0, _jestMatcherUtils.stringify)(received)
- ? `\nReceived: ${(0, _jestMatcherUtils.printReceived)(
- received
- )}`
- : '')
- : () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- (0, _jestMatcherUtils.printDiffOrStringify)(
- expected,
- (0, _utils.getObjectSubset)(received, expected),
- EXPECTED_LABEL,
- RECEIVED_LABEL,
- isExpand(this.expand)
- );
- return {
- message,
- pass
- };
- },
-
- toStrictEqual(received, expected) {
- const matcherName = 'toStrictEqual';
- const options = {
- comment: 'deep equality',
- isNot: this.isNot,
- promise: this.promise
- };
- const pass = (0, _jasmineUtils.equals)(
- received,
- expected,
- toStrictEqualTesters,
- true
- );
- const message = pass
- ? () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- `Expected: not ${(0, _jestMatcherUtils.printExpected)(expected)}\n` +
- ((0, _jestMatcherUtils.stringify)(expected) !==
- (0, _jestMatcherUtils.stringify)(received)
- ? `Received: ${(0, _jestMatcherUtils.printReceived)(received)}`
- : '')
- : () =>
- (0, _jestMatcherUtils.matcherHint)(
- matcherName,
- undefined,
- undefined,
- options
- ) +
- '\n\n' +
- (0, _jestMatcherUtils.printDiffOrStringify)(
- expected,
- received,
- EXPECTED_LABEL,
- RECEIVED_LABEL,
- isExpand(this.expand)
- ); // Passing the actual and expected objects so that a custom reporter
- // could access them, for example in order to display a custom visual diff,
- // or create a different error message
-
- return {
- actual: received,
- expected,
- message,
- name: matcherName,
- pass
- };
- }
- };
- var _default = matchers;
- exports.default = _default;
|