mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-16 08:04:45 -04:00

The realtime note map has been moved into its own class to separate the realtime note business logic from the storing logic. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
import { EventEmitter } from 'events';
|
|
import { Mock } from 'ts-mockery';
|
|
import TypedEmitter from 'typed-emitter';
|
|
|
|
import { Note } from '../../../notes/note.entity';
|
|
import { RealtimeNote, RealtimeNoteEvents } from '../realtime-note';
|
|
import { WebsocketAwareness } from '../websocket-awareness';
|
|
import { WebsocketDoc } from '../websocket-doc';
|
|
import { mockAwareness } from './mock-awareness';
|
|
import { mockWebsocketDoc } from './mock-websocket-doc';
|
|
|
|
class MockRealtimeNote extends (EventEmitter as new () => TypedEmitter<RealtimeNoteEvents>) {
|
|
constructor(
|
|
private note: Note,
|
|
private doc: WebsocketDoc,
|
|
private awareness: WebsocketAwareness,
|
|
) {
|
|
super();
|
|
}
|
|
|
|
public getNote(): Note {
|
|
return this.note;
|
|
}
|
|
|
|
public getYDoc(): WebsocketDoc {
|
|
return this.doc;
|
|
}
|
|
|
|
public getAwareness(): WebsocketAwareness {
|
|
return this.awareness;
|
|
}
|
|
|
|
public removeClient(): void {
|
|
//left blank for mock
|
|
}
|
|
|
|
public destroy(): void {
|
|
//left blank for mock
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Provides a partial mock for {@link RealtimeNote}
|
|
* @param doc Defines the return value for `getYDoc`
|
|
* @param awareness Defines the return value for `getAwareness`
|
|
*/
|
|
export function mockRealtimeNote(
|
|
note?: Note,
|
|
doc?: WebsocketDoc,
|
|
awareness?: WebsocketAwareness,
|
|
): RealtimeNote {
|
|
return Mock.from<RealtimeNote>(
|
|
new MockRealtimeNote(
|
|
note ?? Mock.of<Note>(),
|
|
doc ?? mockWebsocketDoc(),
|
|
awareness ?? mockAwareness(),
|
|
),
|
|
);
|
|
}
|