diff --git a/jest/jest-tests.ts b/jest/jest-tests.ts
index 764daf142a..da141ef9e5 100644
--- a/jest/jest-tests.ts
+++ b/jest/jest-tests.ts
@@ -47,7 +47,7 @@ describe('displayUser', function() {
' ' +
'';
- var displayUser = require('../displayUser');
+ var displayUser = require.requireActual('../displayUser');
var $ = require('jquery');
var fetchCurrentUser = require('../fetchCurrentUser');
diff --git a/jest/jest.d.ts b/jest/jest.d.ts
index 2ee7657283..fde9d894f8 100644
--- a/jest/jest.d.ts
+++ b/jest/jest.d.ts
@@ -3,21 +3,29 @@
// Definitions by: Asana
// Definitions: https://github.com/borisyankov/DefinitelyTyped
+///
+
declare function afterEach(fn: jest.EmptyFunction): void;
declare function beforeEach(fn: jest.EmptyFunction): void;
declare function describe(name: string, fn: jest.EmptyFunction): void;
declare var it: jest.It;
declare function pit(name: string, fn: jest.EmptyFunction): void;
-declare var require: jest.Require;
+
declare function xdescribe(name: string, fn: jest.EmptyFunction): void;
declare function xit(name: string, fn: jest.EmptyFunction): void;
declare function expect(actual: any): jest.Matchers;
+interface NodeRequire {
+ requireActual(moduleName: string): any;
+}
+
declare module jest {
+ function addMatchers(matchers: CustomMatcherFactories): void;
function autoMockOff(): void;
function autoMockOn(): void;
function clearAllTimers(): void;
+ function currentTestPath(): string;
function dontMock(moduleName: string): void;
function genMockFromModule(moduleName: string): Mock;
function genMockFunction(): Mock;
@@ -57,14 +65,9 @@ declare module jest {
only(name: string, fn: EmptyFunction): void;
}
- interface Require {
- (moduleName: string): any;
- requireActual(moduleName: string): any;
- }
-
interface Mock {
- new(): T;
- (...args:any[]): any; // TODO please fix this line! added for TypeScript 1.1.0-1 https://github.com/borisyankov/DefinitelyTyped/pull/2932
+ new (): T;
+ (...args: any[]): any; // TODO please fix this line! added for TypeScript 1.1.0-1 https://github.com/borisyankov/DefinitelyTyped/pull/2932
mock: MockContext;
mockClear(): void;
mockImplementation(fn: Function): Mock;
@@ -78,4 +81,44 @@ declare module jest {
calls: any[][];
instances: T[];
}
+
+ // taken from Jasmine since addMatchers calls into the jasmine api
+ interface CustomMatcherFactories {
+ [index: string]: CustomMatcherFactory;
+ }
+
+ // taken from Jasmine since addMatchers calls into the jasmine api
+ interface CustomMatcherFactory {
+ (util: MatchersUtil, customEqualityTesters: Array): CustomMatcher;
+ }
+
+ // taken from Jasmine since addMatchers calls into the jasmine api
+ interface MatchersUtil {
+ equals(a: any, b: any, customTesters?: Array): boolean;
+ contains(haystack: ArrayLike | string, needle: any, customTesters?: Array): boolean;
+ buildFailureMessage(matcherName: string, isNot: boolean, actual: any, ...expected: Array): string;
+ }
+
+ // taken from Jasmine since addMatchers calls into the jasmine api
+ interface CustomEqualityTester {
+ (first: any, second: any): boolean;
+ }
+
+ // taken from Jasmine since addMatchers calls into the jasmine api
+ interface CustomMatcher {
+ compare(actual: T, expected: T): CustomMatcherResult;
+ compare(actual: any, expected: any): CustomMatcherResult;
+ }
+
+ // taken from Jasmine since addMatchers calls into the jasmine api
+ interface CustomMatcherResult {
+ pass: boolean;
+ message: string;
+ }
+
+ // taken from Jasmine which takes from TypeScript lib.core.es6.d.ts, applicable to CustomMatchers.contains()
+ interface ArrayLike {
+ length: number;
+ [n: number]: T;
+ }
}