mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-20 23:46:14 -04:00
tests: add waitForPromise method and test for it
This commit is contained in:
parent
86c0648ede
commit
a3f062af96
2 changed files with 58 additions and 0 deletions
|
@ -197,6 +197,17 @@ var helper = {};
|
||||||
return deferred;
|
return deferred;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as `waitFor` but using Promises
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
helper.waitForPromise = async function(...args) {
|
||||||
|
// Note: waitFor() has a strange API: On timeout it rejects, but it also throws an uncatchable
|
||||||
|
// exception unless .fail() has been called. That uncatchable exception is disabled here by
|
||||||
|
// passing a no-op function to .fail().
|
||||||
|
return await this.waitFor(...args).fail(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
helper.selectLines = function($startLine, $endLine, startOffset, endOffset){
|
helper.selectLines = function($startLine, $endLine, startOffset, endOffset){
|
||||||
// if no offset is provided, use beginning of start line and end of end line
|
// if no offset is provided, use beginning of start line and end of end line
|
||||||
startOffset = startOffset || 0;
|
startOffset = startOffset || 0;
|
||||||
|
|
|
@ -215,6 +215,53 @@ describe("the test helper", function(){
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('the waitForPromise method', function() {
|
||||||
|
it('takes a timeout and waits long enough', async function() {
|
||||||
|
this.timeout(2000);
|
||||||
|
var startTime = Date.now();
|
||||||
|
await helper.waitForPromise(function() {
|
||||||
|
return false;
|
||||||
|
}, 1500).catch(function() {
|
||||||
|
var duration = Date.now() - startTime;
|
||||||
|
expect(duration).to.be.greaterThan(1490);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('takes an interval and checks on every interval', async function() {
|
||||||
|
this.timeout(4000);
|
||||||
|
var checks = 0;
|
||||||
|
await helper.waitForPromise(function() {
|
||||||
|
checks++;
|
||||||
|
return false;
|
||||||
|
}, 2000, 100).catch(function() {
|
||||||
|
expect(checks).to.be.greaterThan(15);
|
||||||
|
expect(checks).to.be.lessThan(21);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('returns a Promise', function() {
|
||||||
|
it('calls then after success', async function() {
|
||||||
|
let called = false;
|
||||||
|
await helper.waitForPromise(function() {
|
||||||
|
return true;
|
||||||
|
}).then(function() {
|
||||||
|
called = true;
|
||||||
|
});
|
||||||
|
expect(called).to.be(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calls catch on failure', async function() {
|
||||||
|
let called = false;
|
||||||
|
await helper.waitForPromise(function() {
|
||||||
|
return false;
|
||||||
|
},0).catch(function() {
|
||||||
|
called = true;
|
||||||
|
});
|
||||||
|
expect(called).to.be(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("the selectLines method", function(){
|
describe("the selectLines method", function(){
|
||||||
// function to support tests, use a single way to represent whitespaces
|
// function to support tests, use a single way to represent whitespaces
|
||||||
var cleanText = function(text){
|
var cleanText = function(text){
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue