export const getUserID = jest.fn(() => "moritz") export const getPeerHandle = jest.fn((/*uid*/) => undefined) export const getPeerFootprint = jest.fn((/*uid*/) => Promise.resolve(Date.now())) export const sendListener = { callback: null } export const send = jest.fn((uid, channel, message) => { if (sendListener.callback) { sendListener.callback(uid, channel, message) } }) const sendMockClear = send.mockClear send.mockClear = () => { sendListener.callback = null sendMockClear() } export const broadcastListener = { callback: null } export const broadcast = jest.fn((channel, message) => { if (broadcastListener.callback) { broadcastListener.callback(channel, message) } }) const broadcastMockClear = broadcast.mockClear broadcast.mockClear = () => { broadcastListener.callback = null broadcastMockClear() } export const terminatePeer = jest.fn() export const destructor = jest.fn(() => eventListeners.clear()) export const eventListeners = new Map() export const addEventListener = jest.fn((event, callback) => eventListeners.set(event, callback), ) const addEventListenerMockClear = addEventListener.mockClear addEventListener.mockClear = () => { eventListeners.clear() addEventListenerMockClear() } const MockConnection = jest.fn().mockImplementation((/*options*/) => { setTimeout( () => eventListeners.has("roomJoined") && eventListeners.get("roomJoined")(), 0, ) return { getUserID, getPeerHandle, getPeerFootprint, send, broadcast, terminatePeer, destructor, addEventListener, } }) export default MockConnection