feat: add pool and worker readyness tracking infrastructure
[poolifier.git] / tests / worker / thread-worker.test.js
1 const { expect } = require('expect')
2 const { ThreadWorker } = require('../../lib')
3
4 describe('Thread worker test suite', () => {
5 let numberOfMessagesPosted = 0
6 const postMessage = function () {
7 ++numberOfMessagesPosted
8 }
9 class SpyWorker extends ThreadWorker {
10 getMainWorker () {
11 return { postMessage }
12 }
13 }
14
15 it('Verify worker has default maxInactiveTime', () => {
16 const worker = new ThreadWorker(() => {})
17 expect(worker.opts.maxInactiveTime).toStrictEqual(60000)
18 })
19
20 it('Verify that handleError() method is working properly', () => {
21 const error = new Error('Error as an error')
22 const worker = new ThreadWorker(() => {})
23 expect(worker.handleError(error)).toStrictEqual(error)
24 const errorMessage = 'Error as a string'
25 expect(worker.handleError(errorMessage)).toStrictEqual(errorMessage)
26 })
27
28 it('Verify worker invokes the getMainWorker() and postMessage() methods', () => {
29 const worker = new SpyWorker(() => {})
30 worker.sendToMainWorker({ ok: 1 })
31 expect(numberOfMessagesPosted).toBe(1)
32 })
33 })