File size: 1,461 Bytes
fd2c364 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { ws } from "msw";
import { setupServer } from "msw/node";
/**
* Creates a WebSocket link for MSW testing
* @param url - WebSocket URL to mock (default: "ws://localhost/events/socket")
* @returns MSW WebSocket link
*/
export const createWebSocketLink = (url = "ws://localhost/events/socket") =>
ws.link(url);
/**
* Creates and configures an MSW server for WebSocket testing
* @param wsLink - WebSocket link to use for the server
* @returns Configured MSW server
*/
export const createWebSocketMockServer = (wsLink: ReturnType<typeof ws.link>) =>
setupServer(
wsLink.addEventListener("connection", ({ server }) => {
server.connect();
}),
);
/**
* Creates a complete WebSocket testing setup with server and link
* @param url - WebSocket URL to mock (default: "ws://localhost/events/socket")
* @returns Object containing the WebSocket link and configured server
*/
export const createWebSocketTestSetup = (
url = "ws://localhost/events/socket",
) => {
const wsLink = createWebSocketLink(url);
const server = createWebSocketMockServer(wsLink);
return { wsLink, server };
};
/**
* Standard WebSocket test setup for conversation WebSocket handler tests
* Updated to use the V1 WebSocket URL pattern: /sockets/events/{conversationId}
* Uses a wildcard pattern to match any conversation ID
*/
export const conversationWebSocketTestSetup = () =>
createWebSocketTestSetup("ws://localhost:3000/sockets/events/*");
|