fix(history): fix updateHistoryEntryTimestamp to handle nullable user

If a user is null it means we're handling a guest user.

Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
Philip Molares 2022-10-06 13:57:17 +02:00
parent 8bb74bd34a
commit cf89ecf29c
2 changed files with 14 additions and 4 deletions

View file

@ -7,6 +7,7 @@ import { ConfigModule } from '@nestjs/config';
import { EventEmitterModule } from '@nestjs/event-emitter'; import { EventEmitterModule } from '@nestjs/event-emitter';
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { getDataSourceToken, getRepositoryToken } from '@nestjs/typeorm'; import { getDataSourceToken, getRepositoryToken } from '@nestjs/typeorm';
import assert from 'assert';
import { Mock } from 'ts-mockery'; import { Mock } from 'ts-mockery';
import { DataSource, EntityManager, Repository } from 'typeorm'; import { DataSource, EntityManager, Repository } from 'typeorm';
@ -205,6 +206,7 @@ describe('HistoryService', () => {
Note.create(user, alias) as Note, Note.create(user, alias) as Note,
user, user,
); );
assert(createHistoryEntry != null);
expect(await (await createHistoryEntry.note).aliases).toHaveLength(1); expect(await (await createHistoryEntry.note).aliases).toHaveLength(1);
expect((await (await createHistoryEntry.note).aliases)[0].name).toEqual( expect((await (await createHistoryEntry.note).aliases)[0].name).toEqual(
alias, alias,
@ -225,6 +227,7 @@ describe('HistoryService', () => {
Note.create(user, alias) as Note, Note.create(user, alias) as Note,
user, user,
); );
assert(createHistoryEntry != null);
expect(await (await createHistoryEntry.note).aliases).toHaveLength(1); expect(await (await createHistoryEntry.note).aliases).toHaveLength(1);
expect((await (await createHistoryEntry.note).aliases)[0].name).toEqual( expect((await (await createHistoryEntry.note).aliases)[0].name).toEqual(
alias, alias,
@ -237,6 +240,10 @@ describe('HistoryService', () => {
); );
}); });
}); });
it('returns null if user is null', async () => {
const entry = await service.updateHistoryEntryTimestamp({} as Note, null);
expect(entry).toBeNull();
});
}); });
describe('updateHistoryEntry', () => { describe('updateHistoryEntry', () => {

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
@ -74,13 +74,16 @@ export class HistoryService {
* Updates the updatedAt timestamp of a HistoryEntry. * Updates the updatedAt timestamp of a HistoryEntry.
* If no history entry exists, it will be created. * If no history entry exists, it will be created.
* @param {Note} note - the note that the history entry belongs to * @param {Note} note - the note that the history entry belongs to
* @param {User} user - the user that the history entry belongs to * @param {User | null} user - the user that the history entry belongs to
* @return {HistoryEntry} the requested history entry * @return {HistoryEntry} the requested history entry
*/ */
async updateHistoryEntryTimestamp( async updateHistoryEntryTimestamp(
note: Note, note: Note,
user: User, user: User | null,
): Promise<HistoryEntry> { ): Promise<HistoryEntry | null> {
if (user == null) {
return null;
}
try { try {
const entry = await this.getEntryByNote(note, user); const entry = await this.getEntryByNote(note, user);
entry.updatedAt = new Date(); entry.updatedAt = new Date();