Skip to content

Commit 4a8cd09

Browse files
jeetisssindresorhus
authored andcommitted
Set the correct interval when changing spinner by name (#128)
1 parent b4ed2e8 commit 4a8cd09

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

index.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ class Ora {
5959
this._indent = indent;
6060
}
6161

62+
_updateInterval(interval) {
63+
if (interval !== undefined) {
64+
this.interval = interval;
65+
}
66+
}
67+
6268
get spinner() {
6369
return this._spinner;
6470
}
@@ -71,10 +77,6 @@ class Ora {
7177
throw new Error('The given spinner must have a `frames` property');
7278
}
7379

74-
if (spinner.interval !== undefined) {
75-
this.interval = spinner.interval;
76-
}
77-
7880
this._spinner = spinner;
7981
} else if (process.platform === 'win32') {
8082
this._spinner = cliSpinners.line;
@@ -86,6 +88,8 @@ class Ora {
8688
} else {
8789
throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/master/spinners.json for a full list.`);
8890
}
91+
92+
this._updateInterval(this._spinner.interval);
8993
}
9094

9195
get text() {

test.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ test('reset frameIndex when setting new spinner', async t => {
269269
t.regex(stripAnsi(await output), /foo baz/);
270270
});
271271

272-
test('reset interval when setting new spinner', t => {
272+
test('set the correct interval when changing spinner (object case)', t => {
273273
const spinner = new Ora({
274274
isEnabled: false,
275275
spinner: {frames: ['foo', 'bar']},
@@ -283,6 +283,20 @@ test('reset interval when setting new spinner', t => {
283283
t.is(spinner.interval, 200);
284284
});
285285

286+
test('set the correct interval when changing spinner (string case)', t => {
287+
const spinner = new Ora({
288+
isEnabled: false,
289+
spinner: 'dots',
290+
interval: 100
291+
});
292+
293+
t.is(spinner.interval, 100);
294+
295+
spinner.spinner = 'layer';
296+
297+
t.is(spinner.interval, 150);
298+
});
299+
286300
test('throw when incorrect spinner', t => {
287301
const ora = new Ora();
288302

0 commit comments

Comments
 (0)