get tests working on BroadcastClient

This commit is contained in:
Mayukha Vadari
2021-09-16 19:44:06 -04:00
parent 90dae91fb9
commit 14d8753c15
2 changed files with 42 additions and 11 deletions

View File

@@ -47,6 +47,38 @@ export interface PortResponse extends BaseResponse {
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- typing is too complicated otherwise
type MockedWebSocketServer = any
class MockedWebSocketBroadcastServer {
public mocks: MockedWebSocketServer[]
public constructor(mocks: MockedWebSocketServer[]) {
this.mocks = mocks
}
public addResponse(
command: string,
response:
| Response
| ErrorResponse
| ((r: Request) => Response | ErrorResponse),
): void {
this.mocks.forEach((mock) => {
mock.addResponse(command, response)
})
}
public close(): void {
this.mocks.forEach((mock: { close: () => void }) => mock.close())
}
}
export function createBroadcastMockRippled(
ports: number[],
): MockedWebSocketBroadcastServer {
// eslint-disable-next-line max-len -- Too many rules to disable
// eslint-disable-next-line @typescript-eslint/promise-function-async, @typescript-eslint/no-unsafe-return -- Typing is too complicated, not an async function
const mocks = ports.map((port) => createMockRippled(port))
return new MockedWebSocketBroadcastServer(mocks)
}
// eslint-disable-next-line @typescript-eslint/promise-function-async -- Not a promise that's returned
export default function createMockRippled(port: number): MockedWebSocketServer {
const mock = new WebSocketServer({ port }) as MockedWebSocketServer

View File

@@ -2,7 +2,7 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types -- Necessary for test setup */
import { Client, BroadcastClient } from 'xrpl-local'
import createMockRippled from './mockRippled'
import createMockRippled, { createBroadcastMockRippled } from './mockRippled'
import { getFreePort } from './testUtils'
async function setupMockRippledConnection(
@@ -25,9 +25,7 @@ async function setupMockRippledConnectionForBroadcast(
): Promise<void> {
return new Promise<void>((resolve, reject) => {
const servers = ports.map((port) => `ws://localhost:${port}`)
// eslint-disable-next-line max-len -- Too many rules to disable
// eslint-disable-next-line @typescript-eslint/promise-function-async, @typescript-eslint/no-unsafe-return -- Typing is too complicated, not an async function
testcase.mocks = ports.map((port) => createMockRippled(port))
testcase.mockRippled = createBroadcastMockRippled(ports)
testcase.client = new BroadcastClient(servers)
testcase.client.connect().then(resolve).catch(reject)
})
@@ -50,15 +48,16 @@ function teardownClient(this: any, done: () => void): void {
this.client
.disconnect()
.then(() => {
// eslint-disable-next-line no-negated-condition -- Easier to read with negation
if (this.mockRippled != null) {
this.mockRippled.close()
} else {
this.mocks.forEach((mock: { close: () => void }) => mock.close())
}
this.mockRippled.close()
setImmediate(done)
})
.catch(done)
}
export { setupClient, teardownClient, setupBroadcast, createMockRippled }
export {
setupBroadcast,
teardownClient,
setupBroadcast as setupClient,
setupClient as setupClientActual,
createMockRippled,
}