|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- "use strict";
-
- var FakeTimers = require("@sinonjs/fake-timers");
- var fakeServer = require("./index");
-
- // eslint-disable-next-line no-empty-function
- function Server() {}
- Server.prototype = fakeServer;
-
- var fakeServerWithClock = new Server();
-
- fakeServerWithClock.addRequest = function addRequest(xhr) {
- if (xhr.async) {
- if (typeof setTimeout.clock === "object") {
- this.clock = setTimeout.clock;
- } else {
- this.clock = FakeTimers.install();
- this.resetClock = true;
- }
-
- if (!this.longestTimeout) {
- var clockSetTimeout = this.clock.setTimeout;
- var clockSetInterval = this.clock.setInterval;
- var server = this;
-
- this.clock.setTimeout = function(fn, timeout) {
- server.longestTimeout = Math.max(
- timeout,
- server.longestTimeout || 0
- );
-
- return clockSetTimeout.apply(this, arguments);
- };
-
- this.clock.setInterval = function(fn, timeout) {
- server.longestTimeout = Math.max(
- timeout,
- server.longestTimeout || 0
- );
-
- return clockSetInterval.apply(this, arguments);
- };
- }
- }
-
- return fakeServer.addRequest.call(this, xhr);
- };
-
- fakeServerWithClock.respond = function respond() {
- var returnVal = fakeServer.respond.apply(this, arguments);
-
- if (this.clock) {
- this.clock.tick(this.longestTimeout || 0);
- this.longestTimeout = 0;
-
- if (this.resetClock) {
- this.clock.uninstall();
- this.resetClock = false;
- }
- }
-
- return returnVal;
- };
-
- fakeServerWithClock.restore = function restore() {
- if (this.clock) {
- this.clock.uninstall();
- }
-
- return fakeServer.restore.apply(this, arguments);
- };
-
- module.exports = fakeServerWithClock;
|