test: improve worker code coverage
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 26 Aug 2023 20:27:31 +0000 (22:27 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 26 Aug 2023 20:27:31 +0000 (22:27 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/worker/abstract-worker.ts
tests/worker/abstract-worker.test.js

index 033ed2a5e663fbcd7c88b4317adc240e20b2d298..23c661c9cd7ae3f1477660bf960db7a08e50178c 100644 (file)
@@ -135,7 +135,7 @@ export abstract class AbstractWorker<
         }
         if (typeof name === 'string' && name.trim().length === 0) {
           throw new TypeError(
-            'A taskFunctions parameter object key an empty string'
+            'A taskFunctions parameter object key is an empty string'
           )
         }
         if (typeof fn !== 'function') {
index 6fd0ea2cad02f720c7de7392bbf9246259869ba0..e87fdb0b765109090764f5c05b7049bda9560cc2 100644 (file)
@@ -104,11 +104,14 @@ describe('Abstract worker test suite', () => {
     )
   })
 
-  it('Verify that taskFunctions parameter with multiple task functions contains function', () => {
+  it('Verify that taskFunctions parameter with multiple task functions is checked', () => {
     const fn1 = () => {
       return 1
     }
     const fn2 = ''
+    expect(() => new ThreadWorker({ '': fn1 })).toThrowError(
+      new TypeError('A taskFunctions parameter object key is an empty string')
+    )
     expect(() => new ThreadWorker({ fn1, fn2 })).toThrowError(
       new TypeError('A taskFunctions parameter object value is not a function')
     )
@@ -178,6 +181,12 @@ describe('Abstract worker test suite', () => {
       return 2
     }
     const worker = new ClusterWorker({ fn1, fn2 })
+    expect(() => worker.hasTaskFunction(0)).toThrowError(
+      new TypeError('name parameter is not a string')
+    )
+    expect(() => worker.hasTaskFunction('')).toThrowError(
+      new TypeError('name parameter is an empty string')
+    )
     expect(worker.hasTaskFunction('default')).toBe(true)
     expect(worker.hasTaskFunction('fn1')).toBe(true)
     expect(worker.hasTaskFunction('fn2')).toBe(true)
@@ -195,6 +204,15 @@ describe('Abstract worker test suite', () => {
       return 3
     }
     const worker = new ThreadWorker(fn1)
+    expect(() => worker.addTaskFunction(0, fn1)).toThrowError(
+      new TypeError('name parameter is not a string')
+    )
+    expect(() => worker.addTaskFunction('', fn1)).toThrowError(
+      new TypeError('name parameter is an empty string')
+    )
+    expect(() => worker.addTaskFunction('fn3', '')).toThrowError(
+      new TypeError('fn parameter is not a function')
+    )
     expect(worker.taskFunctions.get('default')).toBeInstanceOf(Function)
     expect(worker.taskFunctions.get('fn1')).toBeInstanceOf(Function)
     expect(worker.taskFunctions.size).toBe(2)
@@ -230,6 +248,12 @@ describe('Abstract worker test suite', () => {
       return 2
     }
     const worker = new ClusterWorker({ fn1, fn2 })
+    expect(() => worker.removeTaskFunction(0, fn1)).toThrowError(
+      new TypeError('name parameter is not a string')
+    )
+    expect(() => worker.removeTaskFunction('', fn1)).toThrowError(
+      new TypeError('name parameter is an empty string')
+    )
     worker.getMainWorker = sinon.stub().returns({
       id: 1,
       send: sinon.stub().returns()
@@ -278,6 +302,12 @@ describe('Abstract worker test suite', () => {
       return 2
     }
     const worker = new ThreadWorker({ fn1, fn2 })
+    expect(() => worker.setDefaultTaskFunction(0, fn1)).toThrowError(
+      new TypeError('name parameter is not a string')
+    )
+    expect(() => worker.setDefaultTaskFunction('', fn1)).toThrowError(
+      new TypeError('name parameter is an empty string')
+    )
     expect(worker.taskFunctions.get('default')).toBeInstanceOf(Function)
     expect(worker.taskFunctions.get('fn1')).toBeInstanceOf(Function)
     expect(worker.taskFunctions.get('fn2')).toBeInstanceOf(Function)
@@ -290,6 +320,11 @@ describe('Abstract worker test suite', () => {
         'Cannot set the default task function reserved name as the default task function'
       )
     )
+    expect(() => worker.setDefaultTaskFunction('fn3')).toThrowError(
+      new Error(
+        'Cannot set the default task function to a non-existing task function'
+      )
+    )
     worker.setDefaultTaskFunction('fn1')
     expect(worker.taskFunctions.get('default')).toStrictEqual(
       worker.taskFunctions.get('fn1')