From 4a8cd0970d13de0080b4a5f96a6b6c6d633adcd6 Mon Sep 17 00:00:00 2001 From: Ivakhnenko Dmitry Date: Mon, 23 Sep 2019 11:56:34 +0300 Subject: [PATCH] Set the correct interval when changing spinner by name (#128) --- index.js | 12 ++++++++---- test.js | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 71a9352..024b5fe 100644 --- a/index.js +++ b/index.js @@ -59,6 +59,12 @@ class Ora { this._indent = indent; } + _updateInterval(interval) { + if (interval !== undefined) { + this.interval = interval; + } + } + get spinner() { return this._spinner; } @@ -71,10 +77,6 @@ class Ora { throw new Error('The given spinner must have a `frames` property'); } - if (spinner.interval !== undefined) { - this.interval = spinner.interval; - } - this._spinner = spinner; } else if (process.platform === 'win32') { this._spinner = cliSpinners.line; @@ -86,6 +88,8 @@ class Ora { } else { 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.`); } + + this._updateInterval(this._spinner.interval); } get text() { diff --git a/test.js b/test.js index 210713c..99a8b36 100644 --- a/test.js +++ b/test.js @@ -269,7 +269,7 @@ test('reset frameIndex when setting new spinner', async t => { t.regex(stripAnsi(await output), /foo baz/); }); -test('reset interval when setting new spinner', t => { +test('set the correct interval when changing spinner (object case)', t => { const spinner = new Ora({ isEnabled: false, spinner: {frames: ['foo', 'bar']}, @@ -283,6 +283,20 @@ test('reset interval when setting new spinner', t => { t.is(spinner.interval, 200); }); +test('set the correct interval when changing spinner (string case)', t => { + const spinner = new Ora({ + isEnabled: false, + spinner: 'dots', + interval: 100 + }); + + t.is(spinner.interval, 100); + + spinner.spinner = 'layer'; + + t.is(spinner.interval, 150); +}); + test('throw when incorrect spinner', t => { const ora = new Ora();