Skip to content

Commit

Permalink
Fix missing range() in createWithTimers() return value & require …
Browse files Browse the repository at this point in the history
…Node.js 10 (#55)
  • Loading branch information
novemberborn committed Feb 1, 2021
1 parent 7e47ec8 commit f3c7542
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 14 deletions.
2 changes: 0 additions & 2 deletions .github/workflows/main.yml
Expand Up @@ -13,8 +13,6 @@ jobs:
- 14
- 12
- 10
- 8
- 6
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
Expand Down
13 changes: 7 additions & 6 deletions index.js
Expand Up @@ -57,15 +57,16 @@ const createDelay = ({clearTimeout: defaultClear, setTimeout: set, willResolve})
return delayPromise;
};

const delay = createDelay({willResolve: true});
delay.reject = createDelay({willResolve: false});
delay.range = (minimum, maximum, options) => delay(randomInteger(minimum, maximum), options);
delay.createWithTimers = ({clearTimeout, setTimeout}) => {
const delay = createDelay({clearTimeout, setTimeout, willResolve: true});
delay.reject = createDelay({clearTimeout, setTimeout, willResolve: false});
const createWithTimers = clearAndSet => {
const delay = createDelay({...clearAndSet, willResolve: true});
delay.reject = createDelay({...clearAndSet, willResolve: false});
delay.range = (minimum, maximum, options) => delay(randomInteger(minimum, maximum), options);
return delay;
};

const delay = createWithTimers();
delay.createWithTimers = createWithTimers;

module.exports = delay;
// TODO: Remove this for the next major release
module.exports.default = delay;
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -11,7 +11,7 @@
"url": "https://sindresorhus.com"
},
"engines": {
"node": ">=6"
"node": ">=10"
},
"scripts": {
"test": "xo && ava && tsd"
Expand Down
16 changes: 11 additions & 5 deletions test.js
Expand Up @@ -125,6 +125,12 @@ test('rejects with AbortError if AbortSignal is already aborted', async t => {
t.true(end() < 30);
});

test('returns a promise that is resolved in a random range of time', async t => {
const end = timeSpan();
await delay.range(50, 150);
t.true(inRange(end(), 30, 170), 'is delayed');
});

test('can create a new instance with fixed timeout methods', async t => {
const cleared = [];
const callbacks = [];
Expand Down Expand Up @@ -162,10 +168,10 @@ test('can create a new instance with fixed timeout methods', async t => {
third.clear();
t.is(cleared.length, 1);
t.is(cleared[0], callbacks[2].handle);
});

test('returns a promise that is resolved in a random range of time', async t => {
const end = timeSpan();
await delay.range(50, 150);
t.true(inRange(end(), 30, 170), 'is delayed');
const fourth = custom.range(50, 150, {value: 'fourth'});
t.is(callbacks.length, 4);
t.true(inRange(callbacks[2].ms, 50, 150));
callbacks[3].callback();
t.is(await fourth, 'fourth');
});

0 comments on commit f3c7542

Please sign in to comment.