mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-26 11:43:59 -05:00
HistoryService: Add test for setHistory
Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
parent
524ad658d8
commit
ea7b0cb9c4
1 changed files with 57 additions and 2 deletions
|
@ -9,7 +9,7 @@ import { LoggerModule } from '../logger/logger.module';
|
||||||
import { HistoryService } from './history.service';
|
import { HistoryService } from './history.service';
|
||||||
import { UsersModule } from '../users/users.module';
|
import { UsersModule } from '../users/users.module';
|
||||||
import { NotesModule } from '../notes/notes.module';
|
import { NotesModule } from '../notes/notes.module';
|
||||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
import { getConnectionToken, getRepositoryToken } from '@nestjs/typeorm';
|
||||||
import { Identity } from '../users/identity.entity';
|
import { Identity } from '../users/identity.entity';
|
||||||
import { User } from '../users/user.entity';
|
import { User } from '../users/user.entity';
|
||||||
import { AuthorColor } from '../notes/author-color.entity';
|
import { AuthorColor } from '../notes/author-color.entity';
|
||||||
|
@ -19,23 +19,39 @@ import { Note } from '../notes/note.entity';
|
||||||
import { Tag } from '../notes/tag.entity';
|
import { Tag } from '../notes/tag.entity';
|
||||||
import { AuthToken } from '../auth/auth-token.entity';
|
import { AuthToken } from '../auth/auth-token.entity';
|
||||||
import { Revision } from '../revisions/revision.entity';
|
import { Revision } from '../revisions/revision.entity';
|
||||||
import { Repository } from 'typeorm';
|
import { Connection, Repository } from 'typeorm';
|
||||||
import { NotInDBError } from '../errors/errors';
|
import { NotInDBError } from '../errors/errors';
|
||||||
import { NoteGroupPermission } from '../permissions/note-group-permission.entity';
|
import { NoteGroupPermission } from '../permissions/note-group-permission.entity';
|
||||||
import { NoteUserPermission } from '../permissions/note-user-permission.entity';
|
import { NoteUserPermission } from '../permissions/note-user-permission.entity';
|
||||||
import { Group } from '../groups/group.entity';
|
import { Group } from '../groups/group.entity';
|
||||||
import { ConfigModule } from '@nestjs/config';
|
import { ConfigModule } from '@nestjs/config';
|
||||||
import appConfigMock from '../config/mock/app.config.mock';
|
import appConfigMock from '../config/mock/app.config.mock';
|
||||||
|
import { HistoryEntryImportDto } from './history-entry-import.dto';
|
||||||
|
|
||||||
describe('HistoryService', () => {
|
describe('HistoryService', () => {
|
||||||
let service: HistoryService;
|
let service: HistoryService;
|
||||||
let historyRepo: Repository<HistoryEntry>;
|
let historyRepo: Repository<HistoryEntry>;
|
||||||
|
let connection;
|
||||||
let noteRepo: Repository<Note>;
|
let noteRepo: Repository<Note>;
|
||||||
|
|
||||||
|
type MockConnection = {
|
||||||
|
transaction: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
function mockConnection(): MockConnection {
|
||||||
|
return {
|
||||||
|
transaction: jest.fn(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
const module: TestingModule = await Test.createTestingModule({
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
providers: [
|
providers: [
|
||||||
HistoryService,
|
HistoryService,
|
||||||
|
{
|
||||||
|
provide: getConnectionToken(),
|
||||||
|
useFactory: mockConnection,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
provide: getRepositoryToken(HistoryEntry),
|
provide: getRepositoryToken(HistoryEntry),
|
||||||
useClass: Repository,
|
useClass: Repository,
|
||||||
|
@ -79,6 +95,7 @@ describe('HistoryService', () => {
|
||||||
historyRepo = module.get<Repository<HistoryEntry>>(
|
historyRepo = module.get<Repository<HistoryEntry>>(
|
||||||
getRepositoryToken(HistoryEntry),
|
getRepositoryToken(HistoryEntry),
|
||||||
);
|
);
|
||||||
|
connection = module.get<Connection>(Connection);
|
||||||
noteRepo = module.get<Repository<Note>>(getRepositoryToken(Note));
|
noteRepo = module.get<Repository<Note>>(getRepositoryToken(Note));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -310,6 +327,44 @@ describe('HistoryService', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('setHistory', () => {
|
||||||
|
it('works', async () => {
|
||||||
|
const user = {} as User;
|
||||||
|
const alias = 'alias';
|
||||||
|
const note = Note.create(user, alias);
|
||||||
|
const historyEntry = HistoryEntry.create(user, note);
|
||||||
|
const historyEntryImport: HistoryEntryImportDto = {
|
||||||
|
lastVisited: new Date('2020-12-01 12:23:34'),
|
||||||
|
note: alias,
|
||||||
|
pinStatus: true,
|
||||||
|
};
|
||||||
|
const newlyCreatedHistoryEntry: HistoryEntry = {
|
||||||
|
...historyEntry,
|
||||||
|
pinStatus: historyEntryImport.pinStatus,
|
||||||
|
updatedAt: historyEntryImport.lastVisited,
|
||||||
|
};
|
||||||
|
const mockedManager = {
|
||||||
|
find: jest.fn().mockResolvedValueOnce([historyEntry]),
|
||||||
|
findOne: jest.fn().mockResolvedValueOnce(note),
|
||||||
|
remove: jest.fn().mockImplementationOnce((entry: HistoryEntry) => {
|
||||||
|
expect(entry.note.alias).toEqual(alias);
|
||||||
|
expect(entry.pinStatus).toEqual(false);
|
||||||
|
}),
|
||||||
|
save: jest.fn().mockImplementationOnce((entry: HistoryEntry) => {
|
||||||
|
expect(entry.note.alias).toEqual(newlyCreatedHistoryEntry.note.alias);
|
||||||
|
expect(entry.pinStatus).toEqual(newlyCreatedHistoryEntry.pinStatus);
|
||||||
|
expect(entry.updatedAt).toEqual(newlyCreatedHistoryEntry.updatedAt);
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||||
|
connection.transaction.mockImplementation((cb) => {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||||
|
cb(mockedManager);
|
||||||
|
});
|
||||||
|
await service.setHistory(user, [historyEntryImport]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('toHistoryEntryDto', () => {
|
describe('toHistoryEntryDto', () => {
|
||||||
describe('works', () => {
|
describe('works', () => {
|
||||||
it('with aliased note', async () => {
|
it('with aliased note', async () => {
|
||||||
|
|
Loading…
Reference in a new issue