mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-09-24 21:40:48 +02:00
chore: update websocket test
This commit is contained in:
@@ -26,11 +26,13 @@ describePlugin('websocket', () => {
|
|||||||
const messages = await tauri(async (api, url) => {
|
const messages = await tauri(async (api, url) => {
|
||||||
const ws = await api.websocket.connect(url)
|
const ws = await api.websocket.connect(url)
|
||||||
const received: Message[] = []
|
const received: Message[] = []
|
||||||
await new Promise<void>((resolve, reject) => {
|
// a copy taken once the echoes are in: the close acknowledgement that
|
||||||
|
// `disconnect` triggers may arrive before this function returns
|
||||||
|
const echoes = await new Promise<Message[]>((resolve, reject) => {
|
||||||
setTimeout(() => reject(new Error('echo not received')), 5000)
|
setTimeout(() => reject(new Error('echo not received')), 5000)
|
||||||
ws.addListener((message) => {
|
ws.addListener((message) => {
|
||||||
received.push(message)
|
received.push(message)
|
||||||
if (received.length === 3) resolve()
|
if (received.length === 3) resolve(received.slice())
|
||||||
})
|
})
|
||||||
ws.send('hello')
|
ws.send('hello')
|
||||||
.then(() => ws.send([1, 2, 3]))
|
.then(() => ws.send([1, 2, 3]))
|
||||||
@@ -38,7 +40,7 @@ describePlugin('websocket', () => {
|
|||||||
.catch(reject)
|
.catch(reject)
|
||||||
})
|
})
|
||||||
await ws.disconnect()
|
await ws.disconnect()
|
||||||
return received
|
return echoes
|
||||||
}, WEBSOCKET_FIXTURE_URL)
|
}, WEBSOCKET_FIXTURE_URL)
|
||||||
expect(messages).toEqual([
|
expect(messages).toEqual([
|
||||||
{ type: 'Text', data: 'hello' },
|
{ type: 'Text', data: 'hello' },
|
||||||
@@ -84,21 +86,25 @@ describePlugin('websocket', () => {
|
|||||||
let removed = 0
|
let removed = 0
|
||||||
let kept = 0
|
let kept = 0
|
||||||
const remove = ws.addListener(() => removed++)
|
const remove = ws.addListener(() => removed++)
|
||||||
await new Promise<void>((resolve, reject) => {
|
// counted once both echoes are in, before `disconnect`'s close
|
||||||
setTimeout(() => reject(new Error('echoes not received')), 5000)
|
// acknowledgement can reach the listener still attached
|
||||||
ws.addListener(() => {
|
const counts = await new Promise<{ removed: number; kept: number }>(
|
||||||
kept++
|
(resolve, reject) => {
|
||||||
if (kept === 1) {
|
setTimeout(() => reject(new Error('echoes not received')), 5000)
|
||||||
remove()
|
ws.addListener(() => {
|
||||||
ws.send('second').catch(reject)
|
kept++
|
||||||
} else {
|
if (kept === 1) {
|
||||||
resolve()
|
remove()
|
||||||
}
|
ws.send('second').catch(reject)
|
||||||
})
|
} else {
|
||||||
ws.send('first').catch(reject)
|
resolve({ removed, kept })
|
||||||
})
|
}
|
||||||
|
})
|
||||||
|
ws.send('first').catch(reject)
|
||||||
|
}
|
||||||
|
)
|
||||||
await ws.disconnect()
|
await ws.disconnect()
|
||||||
return { removed, kept }
|
return counts
|
||||||
}, WEBSOCKET_FIXTURE_URL)
|
}, WEBSOCKET_FIXTURE_URL)
|
||||||
expect(counts).toEqual({ removed: 1, kept: 2 })
|
expect(counts).toEqual({ removed: 1, kept: 2 })
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user