1
- import express from 'express'
1
+ import http from 'http'
2
+ import finalhandler from 'finalhandler'
2
3
import serveStatic from 'serve-static'
3
4
import { loadDependency } from '../../src/utils'
4
5
5
- jest . mock ( 'express ' )
6
+ jest . mock ( 'finalhandler ' )
6
7
jest . mock ( 'serve-static' )
7
8
jest . mock ( '../../src/utils' )
8
9
9
10
describe ( 'StaticServer' , ( ) => {
10
11
let StaticServer
11
12
12
13
beforeAll ( ( ) => {
13
- loadDependency . mockImplementation ( moduleName => moduleName === 'express ' ? express : serveStatic )
14
+ loadDependency . mockImplementation ( moduleName => moduleName === 'finalhandler ' ? finalhandler : serveStatic )
14
15
} )
15
16
16
17
beforeEach ( async ( ) => {
@@ -25,7 +26,6 @@ describe('StaticServer', () => {
25
26
test ( 'should load dependencies once' , async ( ) => {
26
27
expect ( StaticServer . express ) . toBeUndefined ( )
27
28
await StaticServer . loadDependencies ( )
28
- expect ( StaticServer . express ) . toBeDefined ( )
29
29
expect ( StaticServer . serveStatic ) . toBeDefined ( )
30
30
31
31
expect ( loadDependency ) . toHaveBeenCalledTimes ( 2 )
@@ -68,12 +68,16 @@ describe('StaticServer', () => {
68
68
} )
69
69
70
70
test ( 'should start static server' , async ( ) => {
71
+ const on = jest . fn ( )
72
+ const listen = jest . fn ( ( port , host , cb ) => cb ( ) )
71
73
jest . spyOn ( console , 'info' ) . mockImplementation ( _ => _ )
74
+ jest . spyOn ( http , 'createServer' ) . mockImplementation ( ( fn ) => {
75
+ fn ( )
76
+ return { on, listen }
77
+ } )
72
78
73
- const use = jest . fn ( )
74
- const listen = jest . fn ( )
75
- StaticServer . express = jest . fn ( ( ) => ( { use, listen } ) )
76
- StaticServer . serveStatic = jest . fn ( )
79
+ StaticServer . serveStatic = jest . fn ( ( ) => ( ) => { } )
80
+ StaticServer . finalhandler = jest . fn ( )
77
81
78
82
const staticServerConfig = {
79
83
folder : 'test-folder' ,
@@ -83,22 +87,25 @@ describe('StaticServer', () => {
83
87
84
88
await expect ( StaticServer . start ( staticServerConfig ) ) . resolves . toBeUndefined ( )
85
89
86
- expect ( StaticServer . express ) . toHaveBeenCalled ( )
87
- expect ( use ) . toHaveBeenCalled ( )
90
+ expect ( StaticServer . finalhandler ) . toHaveBeenCalled ( )
88
91
expect ( StaticServer . serveStatic ) . toHaveBeenCalledWith ( staticServerConfig . folder )
89
92
90
- expect ( listen ) . toHaveBeenCalledWith ( staticServerConfig . port , staticServerConfig . host )
93
+ expect ( listen ) . toHaveBeenCalledWith ( staticServerConfig . port , staticServerConfig . host , expect . any ( Function ) )
91
94
// eslint-disable-next-line no-console
92
95
expect ( console . info ) . toHaveBeenCalled ( )
93
96
} )
94
97
95
98
test ( 'should start static server but not warn when quiet' , async ( ) => {
99
+ const on = jest . fn ( )
100
+ const listen = jest . fn ( ( port , host , cb ) => cb ( ) )
96
101
jest . spyOn ( console , 'info' ) . mockImplementation ( _ => _ )
102
+ jest . spyOn ( http , 'createServer' ) . mockImplementation ( ( fn ) => {
103
+ fn ( )
104
+ return { on, listen }
105
+ } )
97
106
98
- const use = jest . fn ( )
99
- const listen = jest . fn ( )
100
- StaticServer . express = jest . fn ( ( ) => ( { use, listen } ) )
101
- StaticServer . serveStatic = jest . fn ( )
107
+ StaticServer . serveStatic = jest . fn ( ( ) => ( ) => { } )
108
+ StaticServer . finalhandler = jest . fn ( )
102
109
103
110
const staticServerConfig = {
104
111
folder : 'test-folder' ,
@@ -108,11 +115,10 @@ describe('StaticServer', () => {
108
115
109
116
await expect ( StaticServer . start ( staticServerConfig , true ) ) . resolves . toBeUndefined ( )
110
117
111
- expect ( StaticServer . express ) . toHaveBeenCalled ( )
112
- expect ( use ) . toHaveBeenCalled ( )
118
+ expect ( StaticServer . finalhandler ) . toHaveBeenCalled ( )
113
119
expect ( StaticServer . serveStatic ) . toHaveBeenCalledWith ( staticServerConfig . folder )
114
120
115
- expect ( listen ) . toHaveBeenCalledWith ( staticServerConfig . port , staticServerConfig . host )
121
+ expect ( listen ) . toHaveBeenCalledWith ( staticServerConfig . port , staticServerConfig . host , expect . any ( Function ) )
116
122
// eslint-disable-next-line no-console
117
123
expect ( console . info ) . not . toHaveBeenCalled ( )
118
124
} )
0 commit comments