Error handling and unit tests
[poolifier.git] / tests / fixed.test.js
index 78e960bf547b8a65f91bdc6577765439f0021181..3b485fbf0ffd9db7fc35539f8a52db2164377183 100644 (file)
@@ -2,8 +2,11 @@ const expect = require('expect')
 const FixedThreadPool = require('../lib/fixed')
 const numThreads = 10
 const pool = new FixedThreadPool(numThreads,
-  './tests/testWorker.js',
+  './tests/workers/testWorker.js',
   { errorHandler: (e) => console.error(e), onlineHandler: () => console.log('worker is online') })
+const emptyPool = new FixedThreadPool(1, './tests/workers/emptyWorker.js')
+const echoPool = new FixedThreadPool(1, './tests/workers/echoWorker.js')
+const errorPool = new FixedThreadPool(1, './tests/workers/errorWorker.js', { errorHandler: (e) => console.error(e), onlineHandler: () => console.log('worker is online') })
 
 describe('Fixed thread pool test suite ', () => {
   it('Choose worker round robin test', async () => {
@@ -20,6 +23,37 @@ describe('Fixed thread pool test suite ', () => {
     expect(result).toBeFalsy()
   })
 
+  it('Verify that is possible to invoke the execute method without input', async () => {
+    const result = await pool.execute()
+    expect(result).toBeDefined()
+    expect(result).toBeFalsy()
+  })
+
+  it('Verify that is possible to have a worker that return undefined', async () => {
+    const result = await emptyPool.execute()
+    expect(result).toBeFalsy()
+  })
+
+  it('Verify that data are sent to the worker correctly', async () => {
+    const data = { f: 10 }
+    const result = await echoPool.execute(data)
+    expect(result).toBeTruthy()
+    expect(result.f).toBe(data.f)
+  })
+
+  it('Verify that error handling is working properly', async () => {
+    const data = { f: 10 }
+    let inError
+    try {
+      await errorPool.execute(data)
+    } catch (e) {
+      inError = e
+    }
+    expect(inError).toBeTruthy()
+    expect(inError instanceof Error).toBeTruthy()
+    expect(inError.message).toBeTruthy()
+  })
+
   it('Shutdown test', async () => {
     let closedThreads = 0
     pool.workers.forEach(w => {
@@ -45,7 +79,7 @@ describe('Fixed thread pool test suite ', () => {
   })
 
   it('Should work even without opts in input', async () => {
-    const pool1 = new FixedThreadPool(1, './tests/testWorker.js')
+    const pool1 = new FixedThreadPool(1, './tests/workers/testWorker.js')
     const res = await pool1.execute({ test: 'test' })
     expect(res).toBeFalsy()
   })