Skip to content

Commit 22f4f51

Browse files
committed
test: update subscribe test
1 parent 128a4eb commit 22f4f51

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

test/subscribe.test.ts

+18-16
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,53 @@
1-
import { describe, it, expect, vitest, beforeAll, afterAll } from 'vitest'
1+
import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest'
22
import WSGO from '../src/index'
33
import ws from 'ws'
4+
import { createMockWSServer } from './utils'
45

56
describe('subscribe', () => {
6-
let port = 0
7+
const date = new Date(2000, 1, 1)
8+
9+
let port: number = 0
710
let server: ws.Server
811

912
beforeAll(() => {
10-
server = new ws.WebSocketServer({ port })
11-
12-
server.on('connection', (ws) => {
13-
ws.on('message', (data, isBinary) => {
14-
const message = isBinary ? data : data.toString()
15-
ws.send(message)
16-
})
17-
})
13+
const mockWSServer = createMockWSServer(port)
1814

19-
port = (server.address() as ws.AddressInfo).port
15+
server = mockWSServer.server
16+
port = mockWSServer.port
2017
})
2118

2219
afterAll(() => {
2320
server.close()
2421
})
2522

2623
it('should subscribe to event', async () => {
24+
const eventName = 'eventName'
25+
const eventData = { text: 'Hello World!' }
26+
2727
let event: any
2828

2929
// Arrange
3030
const wsgo = WSGO(`ws://localhost:${port}`)
31-
await vitest.waitFor(() => {
31+
await vi.waitFor(() => {
32+
vi.setSystemTime(date)
3233
if (wsgo.ws?.readyState !== window.WebSocket.OPEN) {
3334
throw new Error()
3435
}
3536
})
3637

3738
// Act
38-
wsgo.subscribe('eventName', (ev) => (event = ev))
39-
wsgo.send('eventName', { text: 'Hello World!' })
40-
await vitest.waitFor(() => {
39+
wsgo.subscribe(eventName, (ev) => (event = ev))
40+
wsgo.send(eventName, eventData)
41+
await vi.waitFor(() => {
42+
vi.setSystemTime(date)
4143
if (event === undefined) {
4244
throw new Error()
4345
}
4446
})
4547
wsgo.close()
4648

4749
// Assert
48-
expect(event).toStrictEqual({ event: 'eventName', data: { text: 'Hello World!' } })
50+
expect(event).toStrictEqual({ event: eventName, data: eventData, timeSended: Date.now(), timeReceived: Date.now() })
4951
})
5052

5153
it.todo('should work once', () => {})

0 commit comments

Comments
 (0)