38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
import * as Blockquote from '~/content_editor/extensions/blockquote';
|
|
import * as Bold from '~/content_editor/extensions/bold';
|
|
import * as Dropcursor from '~/content_editor/extensions/dropcursor';
|
|
import * as Paragraph from '~/content_editor/extensions/paragraph';
|
|
|
|
import buildSerializerConfig from '~/content_editor/services/build_serializer_config';
|
|
|
|
describe('content_editor/services/build_serializer_config', () => {
|
|
describe('given one or more content editor extensions', () => {
|
|
it('creates a serializer config that collects all extension serializers by type', () => {
|
|
const extensions = [Bold, Blockquote, Paragraph];
|
|
const serializerConfig = buildSerializerConfig(extensions);
|
|
|
|
extensions.forEach(({ tiptapExtension, serializer }) => {
|
|
const { name, type } = tiptapExtension;
|
|
expect(serializerConfig[`${type}s`][name]).toBe(serializer);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('given an extension without serializer', () => {
|
|
it('does not include the extension in the serializer config', () => {
|
|
const serializerConfig = buildSerializerConfig([Dropcursor]);
|
|
|
|
expect(serializerConfig.marks[Dropcursor.tiptapExtension.name]).toBe(undefined);
|
|
expect(serializerConfig.nodes[Dropcursor.tiptapExtension.name]).toBe(undefined);
|
|
});
|
|
});
|
|
|
|
describe('given no extensions', () => {
|
|
it('creates an empty serializer config', () => {
|
|
expect(buildSerializerConfig()).toStrictEqual({
|
|
marks: {},
|
|
nodes: {},
|
|
});
|
|
});
|
|
});
|
|
});
|