fix(communication): send ready event when both sides are ready

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2023-06-28 19:25:16 +02:00
parent e6b9afc686
commit f4a1999a8b
11 changed files with 271 additions and 142 deletions

View file

@ -8,7 +8,6 @@ import {
MessageTransporter,
MessageType,
MockedBackendTransportAdapter,
waitForOtherPromisesToFinish,
} from '@hedgedoc/commons';
import { RealtimeUserStatusAdapter } from './realtime-user-status-adapter';
@ -41,6 +40,14 @@ describe('realtime user status adapter', () => {
let messageTransporterNotReady: MessageTransporter;
let messageTransporterDecline: MessageTransporter;
beforeAll(() => {
jest.useFakeTimers();
});
afterAll(() => {
jest.useRealTimers();
});
beforeEach(async () => {
clientLoggedIn1 = undefined;
clientLoggedIn2 = undefined;
@ -139,11 +146,12 @@ describe('realtime user status adapter', () => {
'sendMessage',
);
messageTransporterLoggedIn1.sendReady();
messageTransporterLoggedIn2.sendReady();
messageTransporterGuest.sendReady();
messageTransporterDecline.sendReady();
await waitForOtherPromisesToFinish();
messageTransporterLoggedIn1.startSendingOfReadyRequests();
messageTransporterLoggedIn2.startSendingOfReadyRequests();
messageTransporterGuest.startSendingOfReadyRequests();
messageTransporterDecline.startSendingOfReadyRequests();
jest.advanceTimersByTime(500);
});
it('can answer a state request', () => {

View file

@ -102,9 +102,9 @@ describe('backend websocket adapter', () => {
});
it('can send messages', () => {
const value: Message<MessageType> = { type: MessageType.READY };
const value: Message<MessageType> = { type: MessageType.READY_REQUEST };
sut.send(value);
expect(mockedSocket.send).toHaveBeenCalledWith('{"type":"READY"}');
expect(mockedSocket.send).toHaveBeenCalledWith('{"type":"READY_REQUEST"}');
});
it('can read the connection state when open', () => {

View file

@ -106,7 +106,7 @@ export class WebsocketGateway implements OnGatewayConnection {
realtimeNote.addClient(connection);
websocketTransporter.sendReady();
websocketTransporter.startSendingOfReadyRequests();
} catch (error: unknown) {
this.logger.error(
`Error occurred while initializing: ${(error as Error).message}`,