✅(frontend) test successful conversion
Signed-off-by: Stephan Meijer <me@stephanmeijer.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import { Hocuspocus } from '@hocuspocus/server';
|
import { ServerBlockNoteEditor } from '@blocknote/server-util';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
import { describe, expect, test, vi } from 'vitest';
|
import { describe, expect, test, vi } from 'vitest';
|
||||||
import { mock } from 'vitest-mock-extended';
|
import * as Y from 'yjs';
|
||||||
|
|
||||||
vi.mock('../src/env', async (importOriginal) => {
|
vi.mock('../src/env', async (importOriginal) => {
|
||||||
return {
|
return {
|
||||||
@@ -20,16 +20,9 @@ import {
|
|||||||
|
|
||||||
console.error = vi.fn();
|
console.error = vi.fn();
|
||||||
|
|
||||||
const mockOpts = {
|
|
||||||
fallbackMockImplementation: () => {
|
|
||||||
throw new Error('Unexpected call.');
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('Server Tests', () => {
|
describe('Server Tests', () => {
|
||||||
test('POST /api/convert with incorrect API key should responds with 403', async () => {
|
test('POST /api/convert with incorrect API key should responds with 403', async () => {
|
||||||
const hocuspocus = mock<Hocuspocus>({}, mockOpts);
|
const app = initApp();
|
||||||
const app = initApp(hocuspocus);
|
|
||||||
|
|
||||||
const response = await request(app)
|
const response = await request(app)
|
||||||
.post('/api/convert')
|
.post('/api/convert')
|
||||||
@@ -43,8 +36,7 @@ describe('Server Tests', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('POST /api/convert with a Bearer token', async () => {
|
test('POST /api/convert with a Bearer token', async () => {
|
||||||
const hocuspocus = mock<Hocuspocus>({}, mockOpts);
|
const app = initApp();
|
||||||
const app = initApp(hocuspocus);
|
|
||||||
|
|
||||||
const response = await request(app)
|
const response = await request(app)
|
||||||
.post('/api/convert')
|
.post('/api/convert')
|
||||||
@@ -59,8 +51,7 @@ describe('Server Tests', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('POST /api/convert with missing body param content', async () => {
|
test('POST /api/convert with missing body param content', async () => {
|
||||||
const hocuspocus = mock<Hocuspocus>({}, mockOpts);
|
const app = initApp();
|
||||||
const app = initApp(hocuspocus);
|
|
||||||
|
|
||||||
const response = await request(app)
|
const response = await request(app)
|
||||||
.post('/api/convert')
|
.post('/api/convert')
|
||||||
@@ -74,8 +65,7 @@ describe('Server Tests', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('POST /api/convert with body param content being an empty string', async () => {
|
test('POST /api/convert with body param content being an empty string', async () => {
|
||||||
const hocuspocus = mock<Hocuspocus>({}, mockOpts);
|
const app = initApp();
|
||||||
const app = initApp(hocuspocus);
|
|
||||||
|
|
||||||
const response = await request(app)
|
const response = await request(app)
|
||||||
.post('/api/convert')
|
.post('/api/convert')
|
||||||
@@ -90,4 +80,72 @@ describe('Server Tests', () => {
|
|||||||
error: 'Invalid request: missing content',
|
error: 'Invalid request: missing content',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('POST /api/convert with correct content', async () => {
|
||||||
|
const app = initApp();
|
||||||
|
|
||||||
|
const document = [
|
||||||
|
'# Example document',
|
||||||
|
'',
|
||||||
|
'Lorem ipsum dolor sit amet.',
|
||||||
|
'',
|
||||||
|
].join('\n');
|
||||||
|
|
||||||
|
const response = await request(app)
|
||||||
|
.post('/api/convert')
|
||||||
|
.set('Origin', origin)
|
||||||
|
.set('Authorization', apiKey)
|
||||||
|
.send({
|
||||||
|
content: document,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.body).toStrictEqual({
|
||||||
|
content: expect.any(String),
|
||||||
|
});
|
||||||
|
|
||||||
|
const editor = ServerBlockNoteEditor.create();
|
||||||
|
const doc = new Y.Doc();
|
||||||
|
Y.applyUpdate(doc, Buffer.from(response.body.content, 'base64'));
|
||||||
|
const blocks = editor.yDocToBlocks(doc, 'document-store');
|
||||||
|
|
||||||
|
expect(blocks).toStrictEqual([
|
||||||
|
{
|
||||||
|
children: [],
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
styles: {},
|
||||||
|
text: 'Example document',
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
id: expect.any(String),
|
||||||
|
props: {
|
||||||
|
backgroundColor: 'default',
|
||||||
|
isToggleable: false,
|
||||||
|
level: 1,
|
||||||
|
textAlignment: 'left',
|
||||||
|
textColor: 'default',
|
||||||
|
},
|
||||||
|
type: 'heading',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
children: [],
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
styles: {},
|
||||||
|
text: 'Lorem ipsum dolor sit amet.',
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
id: expect.any(String),
|
||||||
|
props: {
|
||||||
|
backgroundColor: 'default',
|
||||||
|
textAlignment: 'left',
|
||||||
|
textColor: 'default',
|
||||||
|
},
|
||||||
|
type: 'paragraph',
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
"eslint-config-impress": "*",
|
"eslint-config-impress": "*",
|
||||||
"nodemon": "3.1.10",
|
"nodemon": "3.1.10",
|
||||||
"supertest": "7.1.1",
|
"supertest": "7.1.1",
|
||||||
"ts-jest": "29.4.0",
|
|
||||||
"ts-node": "10.9.2",
|
"ts-node": "10.9.2",
|
||||||
"tsc-alias": "1.8.16",
|
"tsc-alias": "1.8.16",
|
||||||
"typescript": "*",
|
"typescript": "*",
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import { COLLABORATION_LOGGING } from './env';
|
import { COLLABORATION_LOGGING } from './env';
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
export function logger(...args: unknown[]) {
|
||||||
export function logger(...args: any[]) {
|
|
||||||
if (COLLABORATION_LOGGING === 'true') {
|
if (COLLABORATION_LOGGING === 'true') {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
||||||
console.log(new Date().toISOString(), ' --- ', ...args);
|
console.log(new Date().toISOString(), ' --- ', ...args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user