From b5d986a145cecab5773aa07f22b62e036b7034bf Mon Sep 17 00:00:00 2001 From: Stephen Farrar Date: Sat, 27 Jul 2019 03:55:17 +1000 Subject: [PATCH] Add support for asymmetricMatch. (#37146) See https://jasmine.github.io/tutorials/custom_argument_matchers --- types/jasmine/index.d.ts | 15 +++++++++------ types/jasmine/jasmine-tests.ts | 1 + types/jasmine/ts3.1/index.d.ts | 15 +++++++++------ types/jasmine/ts3.1/jasmine-tests.ts | 1 + 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/types/jasmine/index.d.ts b/types/jasmine/index.d.ts index e0bb403a1f9870..877c7ed6e2c9bc 100644 --- a/types/jasmine/index.d.ts +++ b/types/jasmine/index.d.ts @@ -12,6 +12,7 @@ // Domas Trijonis // Peter Safranek // Moshe Kolodny +// Stephen Farrar // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 // For ddescribe / iit use : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/karma-jasmine/karma-jasmine.d.ts @@ -179,10 +180,10 @@ declare function waitsFor(latchMethod: () => boolean, failureMessage?: string, t declare function waits(timeout?: number): void; declare namespace jasmine { - type ExpectedRecursive = T | ObjectContaining | { + type ExpectedRecursive = T | ObjectContaining | AsymmetricMatcher | { [K in keyof T]: ExpectedRecursive | Any; }; - type Expected = T | ObjectContaining | Any | Spy | { + type Expected = T | ObjectContaining | AsymmetricMatcher | Any | Spy | { [K in keyof T]: ExpectedRecursive; }; type SpyObjMethodNames = @@ -229,17 +230,19 @@ declare namespace jasmine { jasmineToString(): string; } + interface AsymmetricMatcher { + asymmetricMatch(other: any): boolean; + jasmineToString?(): string; + } + // taken from TypeScript lib.core.es6.d.ts, applicable to CustomMatchers.contains() interface ArrayLike { length: number; [n: number]: T; } - interface ArrayContaining { + interface ArrayContaining extends AsymmetricMatcher { new?(sample: ArrayLike): ArrayLike; - - asymmetricMatch(other: any): boolean; - jasmineToString?(): string; } interface ObjectContaining { diff --git a/types/jasmine/jasmine-tests.ts b/types/jasmine/jasmine-tests.ts index c5e1393453b7e2..0169bfcef29c2b 100644 --- a/types/jasmine/jasmine-tests.ts +++ b/types/jasmine/jasmine-tests.ts @@ -847,6 +847,7 @@ describe('custom asymmetry', function() { it('dives in deep', function() { expect('foo,bar,baz,quux').toEqual(tester); + expect(123).not.toEqual(tester); }); describe('when used with a spy', function() { diff --git a/types/jasmine/ts3.1/index.d.ts b/types/jasmine/ts3.1/index.d.ts index 096de3ee119430..3d9288d7cab8d2 100644 --- a/types/jasmine/ts3.1/index.d.ts +++ b/types/jasmine/ts3.1/index.d.ts @@ -10,6 +10,7 @@ // Domas Trijonis // Peter Safranek // Moshe Kolodny +// Stephen Farrar // For ddescribe / iit use : https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/karma-jasmine/karma-jasmine.d.ts type ImplementationCallback = (() => Promise) | ((done: DoneFn) => void); @@ -182,10 +183,10 @@ declare function waitsFor(latchMethod: () => boolean, failureMessage?: string, t declare function waits(timeout?: number): void; declare namespace jasmine { - type ExpectedRecursive = T | ObjectContaining | { + type ExpectedRecursive = T | ObjectContaining | AsymmetricMatcher | { [K in keyof T]: ExpectedRecursive | Any; }; - type Expected = T | ObjectContaining | Any | Spy | { + type Expected = T | ObjectContaining | AsymmetricMatcher | Any | Spy | { [K in keyof T]: ExpectedRecursive; }; type SpyObjMethodNames = @@ -238,17 +239,19 @@ declare namespace jasmine { jasmineToString(): string; } + interface AsymmetricMatcher { + asymmetricMatch(other: any): boolean; + jasmineToString?(): string; + } + // taken from TypeScript lib.core.es6.d.ts, applicable to CustomMatchers.contains() interface ArrayLike { length: number; [n: number]: T; } - interface ArrayContaining { + interface ArrayContaining extends AsymmetricMatcher { new?(sample: ArrayLike): ArrayLike; - - asymmetricMatch(other: any): boolean; - jasmineToString?(): string; } interface ObjectContaining { diff --git a/types/jasmine/ts3.1/jasmine-tests.ts b/types/jasmine/ts3.1/jasmine-tests.ts index 651f0a3befb4cd..d5a29020b9997f 100644 --- a/types/jasmine/ts3.1/jasmine-tests.ts +++ b/types/jasmine/ts3.1/jasmine-tests.ts @@ -849,6 +849,7 @@ describe('custom asymmetry', function() { it('dives in deep', function() { expect('foo,bar,baz,quux').toEqual(tester); + expect(123).not.toEqual(tester); }); describe('when used with a spy', function() {