From d88741d38b9735dfe5f60822065e869a6e2487fb Mon Sep 17 00:00:00 2001 From: Muthu Kumar Date: Sat, 19 May 2018 10:42:04 +0530 Subject: [PATCH] [fix] else block should short-circuit if already resolved --- .vscode/settings.json | 3 +++ index.js | 3 +++ spec/Fuse-spec.js | 10 ++++++++++ 3 files changed, 16 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5e9af4a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "eslint.enable": false +} \ No newline at end of file diff --git a/index.js b/index.js index 0606489..d2c66d4 100644 --- a/index.js +++ b/index.js @@ -161,6 +161,9 @@ class Fuse extends FuseItem { * @returns {Fuse} Returns new FuseItem instance */ else(consequent) { + /* If a resolve exists, just pass on the instance + until .resolve() is called */ + if (this.resolved) return this; return new FuseItem(this.value, consequent); } diff --git a/spec/Fuse-spec.js b/spec/Fuse-spec.js index 5a24ebb..ce8a0b1 100644 --- a/spec/Fuse-spec.js +++ b/spec/Fuse-spec.js @@ -94,4 +94,14 @@ describe("Fuse", () => { expect(result.resolve()).toBe('default'); }); + + it(`Should return 'true'`, () => { + const a = 'ExpectedString'; + + const result = new Fuse(a) + .is('ExpectedString', () => true) + .else(() => 'default'); + + expect(result.resolve()).toBe(true); + }); });