test: use sinon stub to simplify code
[poolifier.git] / tests / worker / thread-worker.test.mjs
1 import { expect } from 'expect'
2 import { restore, stub } from 'sinon'
3 import { ThreadWorker } from '../../lib/index.js'
4
5 describe('Thread worker test suite', () => {
6 class SpyWorker extends ThreadWorker {
7 constructor (fn) {
8 super(fn)
9 this.port = { postMessage: stub().returns() }
10 }
11 }
12
13 afterEach(() => {
14 restore()
15 })
16
17 it('Verify that handleError() method is working properly', () => {
18 const error = new Error('Error as an error')
19 const worker = new ThreadWorker(() => {})
20 expect(worker.handleError(error)).toBeInstanceOf(Error)
21 expect(worker.handleError(error)).toStrictEqual(error)
22 const errorMessage = 'Error as a string'
23 expect(worker.handleError(errorMessage)).toStrictEqual(errorMessage)
24 })
25
26 it('Verify worker invokes the postMessage() method on port property', () => {
27 const worker = new SpyWorker(() => {})
28 worker.sendToMainWorker({ ok: 1 })
29 expect(worker.port.postMessage.calledOnce).toBe(true)
30 })
31 })