PublicE2E: Add test for GET /me/history/{note} in me.e2e-spec.ts

add test for GET /me/history/{note}
add error cases to PUT /me/history/{note} and DELETE /me/history/{note}
activate missing test GET /me/notes/

Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
Philip Molares 2021-03-05 12:04:06 +01:00 committed by David Mehren
parent 82ef4a10cb
commit 50d950c5f2
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3

View file

@ -33,6 +33,7 @@ import { ConfigModule } from '@nestjs/config';
import mediaConfigMock from '../../src/config/media.config.mock'; import mediaConfigMock from '../../src/config/media.config.mock';
import appConfigMock from '../../src/config/app.config.mock'; import appConfigMock from '../../src/config/app.config.mock';
import { User } from '../../src/users/user.entity'; import { User } from '../../src/users/user.entity';
import { NoteMetadataDto } from '../../src/notes/note-metadata.dto';
// TODO Tests have to be reworked using UserService functions // TODO Tests have to be reworked using UserService functions
@ -99,16 +100,55 @@ describe('Notes', () => {
.expect('Content-Type', /json/) .expect('Content-Type', /json/)
.expect(200); .expect(200);
const history = <HistoryEntryDto[]>response.body; const history = <HistoryEntryDto[]>response.body;
expect(history.length).toEqual(1);
const historyDto = historyService.toHistoryEntryDto(createdHistoryEntry);
for (const historyEntry of history) { for (const historyEntry of history) {
if (historyEntry.identifier === 'testGetHistory') { expect(historyEntry.identifier).toEqual(historyDto.identifier);
expect(historyEntry).toEqual(createdHistoryEntry); expect(historyEntry.title).toEqual(historyDto.title);
} expect(historyEntry.tags).toEqual(historyDto.tags);
expect(historyEntry.pinStatus).toEqual(historyDto.pinStatus);
expect(historyEntry.lastVisited).toEqual(
historyDto.lastVisited.toISOString(),
);
} }
}); });
it(`PUT /me/history/{note}`, async () => { describe(`GET /me/history/{note}`, () => {
it('works with an existing note', async () => {
const noteName = 'testGetNoteHistory2'; const noteName = 'testGetNoteHistory2';
const note = await notesService.createNote('', noteName); const note = await notesService.createNote('', noteName);
const createdHistoryEntry = await historyService.createOrUpdateHistoryEntry(
note,
user,
);
const response = await request(app.getHttpServer())
.get(`/me/history/${noteName}`)
.expect('Content-Type', /json/)
.expect(200);
const historyEntry = <HistoryEntryDto>response.body;
const historyEntryDto = historyService.toHistoryEntryDto(
createdHistoryEntry,
);
expect(historyEntry.identifier).toEqual(historyEntryDto.identifier);
expect(historyEntry.title).toEqual(historyEntryDto.title);
expect(historyEntry.tags).toEqual(historyEntryDto.tags);
expect(historyEntry.pinStatus).toEqual(historyEntryDto.pinStatus);
expect(historyEntry.lastVisited).toEqual(
historyEntryDto.lastVisited.toISOString(),
);
});
it('fails with a non-existing note', async () => {
await request(app.getHttpServer())
.get('/me/history/i_dont_exist')
.expect('Content-Type', /json/)
.expect(404);
});
});
describe(`PUT /me/history/{note}`, () => {
it('works', async () => {
const noteName = 'testGetNoteHistory3';
const note = await notesService.createNote('', noteName);
await historyService.createOrUpdateHistoryEntry(note, user); await historyService.createOrUpdateHistoryEntry(note, user);
const historyEntryUpdateDto = new HistoryEntryUpdateDto(); const historyEntryUpdateDto = new HistoryEntryUpdateDto();
historyEntryUpdateDto.pinStatus = true; historyEntryUpdateDto.pinStatus = true;
@ -127,9 +167,17 @@ describe('Notes', () => {
} }
expect(historyEntry.pinStatus).toEqual(true); expect(historyEntry.pinStatus).toEqual(true);
}); });
it('fails with a non-existing note', async () => {
await request(app.getHttpServer())
.put('/me/history/i_dont_exist')
.expect('Content-Type', /json/)
.expect(404);
});
});
it(`DELETE /me/history/{note}`, async () => { describe(`DELETE /me/history/{note}`, () => {
const noteName = 'testGetNoteHistory3'; it('works', async () => {
const noteName = 'testGetNoteHistory4';
const note = await notesService.createNote('', noteName); const note = await notesService.createNote('', noteName);
await historyService.createOrUpdateHistoryEntry(note, user); await historyService.createOrUpdateHistoryEntry(note, user);
const response = await request(app.getHttpServer()) const response = await request(app.getHttpServer())
@ -145,16 +193,33 @@ describe('Notes', () => {
} }
return expect(historyEntry).toBeNull(); return expect(historyEntry).toBeNull();
}); });
describe('fails', () => {
it('with a non-existing note', async () => {
await request(app.getHttpServer())
.delete('/me/history/i_dont_exist')
.expect(404);
});
it('with a non-existing history entry', async () => {
const noteName = 'testGetNoteHistory5';
await notesService.createNote('', noteName);
await request(app.getHttpServer())
.delete(`/me/history/${noteName}`)
.expect(404);
});
});
});
it.skip(`GET /me/notes/`, async () => { it(`GET /me/notes/`, async () => {
// TODO use function from HistoryService to add an History Entry const noteName = 'testNote';
await notesService.createNote('This is a test note.', 'test7'); await notesService.createNote('', noteName, user);
// usersService.getALLNotesOwnedByUser() TODO Implement function
const response = await request(app.getHttpServer()) const response = await request(app.getHttpServer())
.get('/me/notes/') .get('/me/notes/')
.expect('Content-Type', /json/) .expect('Content-Type', /json/)
.expect(200); .expect(200);
expect(response.body.revisions).toHaveLength(1); const noteMetaDtos = response.body as NoteMetadataDto[];
expect(noteMetaDtos).toHaveLength(1);
expect(noteMetaDtos[0].alias).toEqual(noteName);
expect(noteMetaDtos[0].updateUser.userName).toEqual(user.userName);
}); });
afterAll(async () => { afterAll(async () => {