镜像自地址
https://github.com/wikimedia/VisualEditor.git
已同步 2024-06-03 03:40:20 +08:00
06b7b0da83
Change-Id: I08c36069578c5139a0c4ed26adaa526def473136
107 行
2.1 KiB
JavaScript
107 行
2.1 KiB
JavaScript
/*!
|
|
* VisualEditor Scheduler tests.
|
|
*
|
|
* @copyright See AUTHORS.txt
|
|
*/
|
|
|
|
QUnit.module( 've.Scheduler' );
|
|
|
|
/* Stubs */
|
|
|
|
ve.TestScheduler = function VeTestScheduler() {
|
|
// Parent constructor
|
|
ve.TestScheduler.super.apply( this, arguments );
|
|
|
|
this.nowCounter = 0;
|
|
};
|
|
|
|
OO.inheritClass( ve.TestScheduler, ve.Scheduler );
|
|
|
|
ve.TestScheduler.static.maxDelay = 5;
|
|
|
|
ve.TestScheduler.prototype.now = function () {
|
|
return this.nowCounter++;
|
|
};
|
|
|
|
/* Tests */
|
|
|
|
QUnit.test( 'Call with no real async', ( assert ) => {
|
|
const scheduler = new ve.TestScheduler(),
|
|
begun = assert.async(),
|
|
done = assert.async();
|
|
|
|
scheduler.schedule(
|
|
() => {
|
|
assert.true( true, 'initial action was called' );
|
|
begun();
|
|
},
|
|
() => true
|
|
).done( () => {
|
|
assert.true( true, 'promise was resolved' );
|
|
done();
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'Call with delay', ( assert ) => {
|
|
const scheduler = new ve.TestScheduler(),
|
|
begun = assert.async(),
|
|
done = assert.async();
|
|
|
|
let delayed = false;
|
|
scheduler.schedule(
|
|
() => {
|
|
assert.true( true, 'initial action was called' );
|
|
setTimeout( () => {
|
|
delayed = true;
|
|
assert.true( true, 'setTimeout delay occurred' );
|
|
} );
|
|
begun();
|
|
},
|
|
() => delayed
|
|
).done( () => {
|
|
assert.true( true, 'promise was resolved' );
|
|
done();
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'Test that throws an exception', ( assert ) => {
|
|
const scheduler = new ve.TestScheduler(),
|
|
begun = assert.async(),
|
|
done = assert.async();
|
|
|
|
scheduler.schedule(
|
|
() => {
|
|
assert.true( true, 'initial action was called' );
|
|
begun();
|
|
},
|
|
() => {
|
|
throw new Error();
|
|
}
|
|
).done( () => {
|
|
assert.true( false, 'promise was wrongly resolved as successful' );
|
|
} ).fail( () => {
|
|
assert.true( true, 'promise was rejected' );
|
|
done();
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'Test that never succeeds', ( assert ) => {
|
|
const scheduler = new ve.TestScheduler(),
|
|
begun = assert.async(),
|
|
done = assert.async();
|
|
|
|
scheduler.schedule(
|
|
() => {
|
|
assert.true( true, 'initial action was called' );
|
|
begun();
|
|
},
|
|
() => false
|
|
).done( () => {
|
|
assert.true( false, 'promise was wrongly resolved as successful' );
|
|
done();
|
|
} ).fail( () => {
|
|
assert.true( true, 'promise was rejected' );
|
|
done();
|
|
} );
|
|
} );
|