154 lines
5.1 KiB
JavaScript
154 lines
5.1 KiB
JavaScript
"use strict";
|
|
|
|
require("./toBeInRangeMatcher");
|
|
|
|
var _index = _interopRequireDefault(require("./index"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _next(value) { step("next", value); } function _throw(err) { step("throw", err); } _next(); }); }; }
|
|
|
|
// this is a copy of "it waits for expectation to pass" modified to use jestFakeTimers and two ways of Date.now mocking
|
|
// This breakes when we remove the const { setTimeout, Date: { now } } = typeof window !== "undefined" ? window : global;
|
|
// line from the index.ts
|
|
beforeEach(function () {
|
|
jest.resetModules();
|
|
jest.restoreAllMocks();
|
|
jest.useRealTimers();
|
|
});
|
|
test("it always uses real timers even if they were set to fake before importing the module",
|
|
/*#__PURE__*/
|
|
_asyncToGenerator(
|
|
/*#__PURE__*/
|
|
regeneratorRuntime.mark(function _callee() {
|
|
var importedWaitForExpect, numberToChange, randomTimeout;
|
|
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
while (1) {
|
|
switch (_context.prev = _context.next) {
|
|
case 0:
|
|
jest.useFakeTimers();
|
|
/* eslint-disable global-require */
|
|
|
|
importedWaitForExpect = require("./index");
|
|
jest.useRealTimers();
|
|
numberToChange = 10; // we are using random timeout here to simulate a real-time example
|
|
// of an async operation calling a callback at a non-deterministic time
|
|
|
|
randomTimeout = Math.floor(Math.random() * 300);
|
|
setTimeout(function () {
|
|
numberToChange = 100;
|
|
}, randomTimeout);
|
|
jest.useFakeTimers();
|
|
_context.next = 9;
|
|
return importedWaitForExpect(function () {
|
|
expect(numberToChange).toEqual(100);
|
|
});
|
|
|
|
case 9:
|
|
case "end":
|
|
return _context.stop();
|
|
}
|
|
}
|
|
}, _callee, this);
|
|
}))); // Date.now might be mocked with two main ways:
|
|
// via mocking whole Date, or by mocking just Date.now
|
|
// hence two test cases covered both ways
|
|
|
|
test("it works even if the Date was mocked",
|
|
/*#__PURE__*/
|
|
_asyncToGenerator(
|
|
/*#__PURE__*/
|
|
regeneratorRuntime.mark(function _callee2() {
|
|
var numberToChange, expectFailingMessage;
|
|
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
while (1) {
|
|
switch (_context2.prev = _context2.next) {
|
|
case 0:
|
|
/* eslint-disable no-global-assign */
|
|
// @ts-ignore: Cannot reassign to const Date
|
|
Date = jest.fn(function () {
|
|
return {
|
|
now: function now() {
|
|
return 1482363367071;
|
|
}
|
|
};
|
|
});
|
|
/* eslint-enable */
|
|
|
|
numberToChange = 10;
|
|
setTimeout(function () {
|
|
numberToChange = 100;
|
|
}, 100);
|
|
_context2.prev = 3;
|
|
_context2.next = 6;
|
|
return (0, _index.default)(function () {
|
|
expect(numberToChange).toEqual(101);
|
|
}, 1000);
|
|
|
|
case 6:
|
|
_context2.next = 11;
|
|
break;
|
|
|
|
case 8:
|
|
_context2.prev = 8;
|
|
_context2.t0 = _context2["catch"](3);
|
|
expectFailingMessage = _context2.t0.message;
|
|
|
|
case 11:
|
|
expect(expectFailingMessage).toMatch("Expected value to equal:");
|
|
expect(expectFailingMessage).toMatch("101");
|
|
expect(expectFailingMessage).toMatch("Received:");
|
|
expect(expectFailingMessage).toMatch("100");
|
|
|
|
case 15:
|
|
case "end":
|
|
return _context2.stop();
|
|
}
|
|
}
|
|
}, _callee2, this, [[3, 8]]);
|
|
})));
|
|
test("it works even if the Date.now was mocked",
|
|
/*#__PURE__*/
|
|
_asyncToGenerator(
|
|
/*#__PURE__*/
|
|
regeneratorRuntime.mark(function _callee3() {
|
|
var numberToChange, expectFailingMessage;
|
|
return regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
while (1) {
|
|
switch (_context3.prev = _context3.next) {
|
|
case 0:
|
|
Date.now = jest.fn(function () {
|
|
return 1482363367071;
|
|
});
|
|
numberToChange = 10;
|
|
setTimeout(function () {
|
|
numberToChange = 100;
|
|
}, 100);
|
|
_context3.prev = 3;
|
|
_context3.next = 6;
|
|
return (0, _index.default)(function () {
|
|
expect(numberToChange).toEqual(101);
|
|
}, 1000);
|
|
|
|
case 6:
|
|
_context3.next = 11;
|
|
break;
|
|
|
|
case 8:
|
|
_context3.prev = 8;
|
|
_context3.t0 = _context3["catch"](3);
|
|
expectFailingMessage = _context3.t0.message;
|
|
|
|
case 11:
|
|
expect(expectFailingMessage).toMatch("Expected value to equal:");
|
|
expect(expectFailingMessage).toMatch("101");
|
|
expect(expectFailingMessage).toMatch("Received:");
|
|
expect(expectFailingMessage).toMatch("100");
|
|
|
|
case 15:
|
|
case "end":
|
|
return _context3.stop();
|
|
}
|
|
}
|
|
}, _callee3, this, [[3, 8]]);
|
|
}))); |