Skip to content

Commit 3d87099

Browse files
committed
Enhance createTestWebSocket with event handler options
Added optional parameters to createTestWebSocket for onOpen, onClose, onError, and onMessage event handlers. Improved internal state tracking for open/close simulation and updated simulateMessage to use the provided onMessage handler.
1 parent d2e7afd commit 3d87099

1 file changed

Lines changed: 22 additions & 11 deletions

File tree

packages/common/test/_deps.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,17 @@ export interface TestWebSocket extends WebSocket {
166166
readonly simulateClose: () => void;
167167
}
168168

169-
export const createTestWebSocket = (): TestWebSocket => {
169+
export const createTestWebSocket = (
170+
_url?: string,
171+
options?: {
172+
onOpen?: () => void;
173+
onClose?: (event: CloseEvent) => void;
174+
onError?: (error: any) => void;
175+
onMessage?: (data: string | ArrayBuffer | Blob) => void;
176+
},
177+
): TestWebSocket => {
170178
const sentMessages: Array<Uint8Array> = [];
171-
let messageHandler: ((message: MessageEvent<Uint8Array>) => void) | undefined;
172-
let openHandler: (() => void) | undefined;
173-
let closeHandler: (() => void) | undefined;
179+
let isWebSocketOpen = false;
174180

175181
return {
176182
get sentMessages() {
@@ -180,19 +186,24 @@ export const createTestWebSocket = (): TestWebSocket => {
180186
sentMessages.push(data as Uint8Array);
181187
return ok();
182188
},
183-
getReadyState: () => "connecting",
184-
isOpen: constFalse,
189+
getReadyState: () => (isWebSocketOpen ? "open" : "connecting"),
190+
isOpen: () => isWebSocketOpen,
185191
simulateMessage: (message: Uint8Array) => {
186-
if (messageHandler) {
187-
const event = { data: message } as MessageEvent<Uint8Array>;
188-
messageHandler(event);
192+
if (options?.onMessage) {
193+
options.onMessage(message.buffer as ArrayBuffer);
189194
}
190195
},
191196
simulateOpen: () => {
192-
if (openHandler) openHandler();
197+
isWebSocketOpen = true;
198+
if (options?.onOpen) {
199+
options.onOpen();
200+
}
193201
},
194202
simulateClose: () => {
195-
if (closeHandler) closeHandler();
203+
isWebSocketOpen = false;
204+
if (options?.onClose) {
205+
options.onClose({} as CloseEvent);
206+
}
196207
},
197208
[Symbol.dispose]: constVoid,
198209
};

0 commit comments

Comments
 (0)