test: increase coverage of constructor tests

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2023-05-09 11:16:52 +02:00
parent 2f59869e12
commit b199cdba67

View file

@ -36,9 +36,15 @@ describe('websocket connection', () => {
let mockedUser: User; let mockedUser: User;
let mockedMessageTransporter: MessageTransporter; let mockedMessageTransporter: MessageTransporter;
const mockedUserName = 'mockedUserName';
const mockedDisplayName = 'mockedDisplayName';
beforeEach(() => { beforeEach(() => {
mockedRealtimeNote = new RealtimeNote(Mock.of<Note>({}), ''); mockedRealtimeNote = new RealtimeNote(Mock.of<Note>({}), '');
mockedUser = Mock.of<User>({}); mockedUser = Mock.of<User>({
username: mockedUserName,
displayName: mockedDisplayName,
});
mockedMessageTransporter = new MockedBackendMessageTransporter(''); mockedMessageTransporter = new MockedBackendMessageTransporter('');
}); });
@ -72,10 +78,15 @@ describe('websocket connection', () => {
'returns the correct realtime user status with acceptEdits %s', 'returns the correct realtime user status with acceptEdits %s',
(acceptEdits) => { (acceptEdits) => {
const realtimeUserStatus = Mock.of<RealtimeUserStatusAdapter>(); const realtimeUserStatus = Mock.of<RealtimeUserStatusAdapter>();
let usedConnection: RealtimeConnection | undefined = undefined;
jest jest
.spyOn(RealtimeUserStatusModule, 'RealtimeUserStatusAdapter') .spyOn(RealtimeUserStatusModule, 'RealtimeUserStatusAdapter')
.mockImplementation( .mockImplementation(
(username, displayName, connection, acceptCursorUpdateProvider) => { (username, displayName, connection, acceptCursorUpdateProvider) => {
expect(username).toBe(mockedUserName);
expect(displayName).toBe(mockedDisplayName);
usedConnection = connection;
expect(acceptCursorUpdateProvider()).toBe(acceptEdits); expect(acceptCursorUpdateProvider()).toBe(acceptEdits);
return realtimeUserStatus; return realtimeUserStatus;
}, },
@ -88,6 +99,7 @@ describe('websocket connection', () => {
acceptEdits, acceptEdits,
); );
expect(usedConnection).toBe(sut);
expect(sut.getRealtimeUserStateAdapter()).toBe(realtimeUserStatus); expect(sut.getRealtimeUserStateAdapter()).toBe(realtimeUserStatus);
}, },
); );
@ -99,7 +111,9 @@ describe('websocket connection', () => {
jest jest
.spyOn(HedgeDocCommonsModule, 'YDocSyncServerAdapter') .spyOn(HedgeDocCommonsModule, 'YDocSyncServerAdapter')
.mockImplementation((messageTransporter, doc, acceptEditsProvider) => { .mockImplementation((messageTransporter, doc, acceptEditsProvider) => {
expect(messageTransporter).toBe(mockedMessageTransporter);
expect(acceptEditsProvider()).toBe(acceptEdits); expect(acceptEditsProvider()).toBe(acceptEdits);
expect(doc).toBe(mockedRealtimeNote.getRealtimeDoc());
return yDocSyncServerAdapter; return yDocSyncServerAdapter;
}); });
@ -153,13 +167,15 @@ describe('websocket connection', () => {
expect(sut.getDisplayName()).toBe('MockUser'); expect(sut.getDisplayName()).toBe('MockUser');
}); });
it('returns a fallback if no username has been set', () => { it('returns a random fallback display name if the provided user has no display name', () => {
const randomName = 'I am a random name'; const randomName = 'I am a random name';
jest jest
.spyOn(NameRandomizerModule, 'generateRandomName') .spyOn(NameRandomizerModule, 'generateRandomName')
.mockReturnValue(randomName); .mockReturnValue(randomName);
mockedUser = Mock.of<User>({});
const sut = new RealtimeConnection( const sut = new RealtimeConnection(
mockedMessageTransporter, mockedMessageTransporter,
mockedUser, mockedUser,