Add UTs for SelectionStrategiesUtils
[poolifier.git] / tests / pools / selection-strategies / selection-strategies-utils.test.js
1 const { expect } = require('expect')
2 const sinon = require('sinon')
3 const {
4 SelectionStrategiesUtils
5 } = require('../../../lib/pools/selection-strategies/selection-strategies-utils')
6 const {
7 FixedThreadPool,
8 WorkerChoiceStrategies
9 } = require('../../../lib/index')
10 const {
11 RoundRobinWorkerChoiceStrategy
12 } = require('../../../lib/pools/selection-strategies/round-robin-worker-choice-strategy')
13 const {
14 LessRecentlyUsedWorkerChoiceStrategy
15 } = require('../../../lib/pools/selection-strategies/less-recently-used-worker-choice-strategy')
16
17 describe('Selection strategies utils test suite', () => {
18 let pool
19 beforeEach(() => {
20 pool = sinon.createStubInstance(FixedThreadPool)
21 })
22
23 afterEach(() => {
24 sinon.restore()
25 })
26
27 it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => {
28 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(pool)
29 expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
30 })
31
32 it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => {
33 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
34 pool,
35 WorkerChoiceStrategies.ROUND_ROBIN
36 )
37 expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
38 })
39
40 it('Verify that getWorkerChoiceStrategy() can return LESS_RECENTLY_USED strategy', () => {
41 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
42 pool,
43 WorkerChoiceStrategies.LESS_RECENTLY_USED
44 )
45 expect(strategy).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
46 })
47
48 it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => {
49 expect(() => {
50 SelectionStrategiesUtils.getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY')
51 }).toThrowError(
52 new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found")
53 )
54 })
55 })