From f34fdabe7562f0c1da21643162d5b6c8ad298812 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 6 May 2023 22:22:32 +0200 Subject: [PATCH] refactor: simplify worker inputs checking code MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/worker/abstract-worker.ts | 12 ++----- tests/worker/abstract-worker.test.js | 50 +++++++++++++++++++++------- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index 12fb67af..16373669 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -103,14 +103,6 @@ export abstract class AbstractWorker< if (taskFunctions == null) { throw new Error('taskFunctions parameter is mandatory') } - if ( - typeof taskFunctions !== 'function' && - typeof taskFunctions !== 'object' - ) { - throw new TypeError( - 'taskFunctions parameter is not a function or an object' - ) - } this.taskFunctions = new Map>() if (typeof taskFunctions === 'function') { this.taskFunctions.set(DEFAULT_FUNCTION_NAME, taskFunctions.bind(this)) @@ -132,7 +124,9 @@ export abstract class AbstractWorker< throw new Error('taskFunctions parameter object is empty') } } else { - throw new TypeError('taskFunctions parameter is not an object literal') + throw new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) } } diff --git a/tests/worker/abstract-worker.test.js b/tests/worker/abstract-worker.test.js index 3c0beda3..260e5b88 100644 --- a/tests/worker/abstract-worker.test.js +++ b/tests/worker/abstract-worker.test.js @@ -33,39 +33,65 @@ describe('Abstract worker test suite', () => { ) }) - it('Verify that taskFunctions parameter is a function or an object', () => { + it('Verify that taskFunctions parameter is a function or a plain object', () => { expect(() => new ClusterWorker(0)).toThrowError( - new TypeError('taskFunctions parameter is not a function or an object') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) expect(() => new ClusterWorker('')).toThrowError( - new TypeError('taskFunctions parameter is not a function or an object') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) expect(() => new ClusterWorker(true)).toThrowError( - new TypeError('taskFunctions parameter is not a function or an object') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) - }) - - it('Verify that taskFunctions parameter is not an empty object literal', () => { expect(() => new ClusterWorker([])).toThrowError( - new TypeError('taskFunctions parameter is not an object literal') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) expect(() => new ClusterWorker(new Map())).toThrowError( - new TypeError('taskFunctions parameter is not an object literal') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) expect(() => new ClusterWorker(new Set())).toThrowError( - new TypeError('taskFunctions parameter is not an object literal') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) expect(() => new ClusterWorker(new WeakMap())).toThrowError( - new TypeError('taskFunctions parameter is not an object literal') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) expect(() => new ClusterWorker(new WeakSet())).toThrowError( - new TypeError('taskFunctions parameter is not an object literal') + new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) ) + }) + + it('Verify that taskFunctions parameter is not an empty object', () => { expect(() => new ClusterWorker({})).toThrowError( new Error('taskFunctions parameter object is empty') ) }) + it('Verify that taskFunctions parameter with multiple task functions contains function', () => { + const fn1 = () => { + return 1 + } + const fn2 = '' + expect(() => new ThreadWorker({ fn1, fn2 })).toThrowError( + new TypeError('A taskFunctions parameter object value is not a function') + ) + }) + it('Verify that taskFunctions parameter with multiple task functions is taken', () => { const fn1 = () => { return 1 -- 2.34.1