Tests: Fix sinon timers for oldIE

This commit is contained in:
Oleg 2014-01-13 22:22:51 +04:00
parent c991edd2e2
commit f1af3c23f9
4 changed files with 36 additions and 4 deletions

View File

@ -60,7 +60,8 @@ module.exports = function( grunt ) {
files: {
"qunit": "qunit/qunit",
"require.js": "requirejs/require.js",
"sinon/fake_timers.js": "sinon/lib/sinon/util/fake_timers.js"
"sinon/fake_timers.js": "sinon/lib/sinon/util/fake_timers.js",
"sinon/timers_ie.js": "sinon/lib/sinon/util/timers_ie.js"
}
}
},

View File

@ -17,6 +17,7 @@
<script src="libs/qunit/qunit.js"></script>
<script src="libs/require.js"></script>
<script src="libs/sinon/fake_timers.js"></script>
<script src="libs/sinon/timers_ie.js"></script>
<!-- See testinit for the list of tests -->
<script src="data/testinit.js"></script>

View File

@ -0,0 +1,27 @@
/*global sinon, setTimeout, setInterval, clearTimeout, clearInterval, Date*/
/**
* Helps IE run the fake timers. By defining global functions, IE allows
* them to be overwritten at a later point. If these are not defined like
* this, overwriting them will result in anything from an exception to browser
* crash.
*
* If you don't require fake timers to work in IE, don't include this file.
*
* @author Christian Johansen (christian@cjohansen.no)
* @license BSD
*
* Copyright (c) 2010-2013 Christian Johansen
*/
function setTimeout() {}
function clearTimeout() {}
function setInterval() {}
function clearInterval() {}
function Date() {}
// Reassign the original functions. Now their writable attribute
// should be true. Hackish, I know, but it works.
setTimeout = sinon.timers.setTimeout;
clearTimeout = sinon.timers.clearTimeout;
setInterval = sinon.timers.setInterval;
clearInterval = sinon.timers.clearInterval;
Date = sinon.timers.Date;

View File

@ -5,18 +5,21 @@ if ( !jQuery.fx ) {
return;
}
var off = jQuery.fx.off;
var off = jQuery.fx.off,
oldNow = jQuery.now;
module("effects", {
setup: function() {
this.clock = sinon.useFakeTimers( 505877050 );
this._oldInterval = jQuery.fx.interval;
jQuery.fx.interval = 10;
jQuery.now = Date.now;
jQuery.now = function() {
return +( new Date() );
};
},
teardown: function() {
this.clock.restore();
jQuery.now = Date.now;
jQuery.now = oldNow;
jQuery.fx.stop();
jQuery.fx.interval = this._oldInterval;
jQuery.fx.off = off;