mirror of
https://github.com/codex-team/editor.js
synced 2024-05-18 06:16:47 +02:00
180 lines
4 KiB
TypeScript
180 lines
4 KiB
TypeScript
import ToolMock from '../../fixtures/tools/ToolMock';
|
|
import type EditorJS from '../../../../types/index';
|
|
|
|
describe('Renderer module', function () {
|
|
it('should not cause onChange firing during initial rendering', function () {
|
|
const config = {
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'some text',
|
|
},
|
|
},
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'some other text',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
onChange: () => {},
|
|
};
|
|
|
|
cy.createEditor(config)
|
|
.as('editorInstance');
|
|
|
|
cy.spy(config, 'onChange').as('onChange');
|
|
|
|
cy.get('@onChange').should('not.be.called');
|
|
});
|
|
|
|
it('should show Stub block if block tool is not registered', function () {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'some text',
|
|
},
|
|
},
|
|
{
|
|
type: 'non-existing tool',
|
|
data: {},
|
|
},
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'some other text',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
})
|
|
.as('editorInstance');
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-block')
|
|
.should('have.length', 3);
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-block')
|
|
.each(($el, index) => {
|
|
/**
|
|
* Check that the second block is stub
|
|
*/
|
|
if (index === 1) {
|
|
cy.wrap($el)
|
|
.find('.ce-stub')
|
|
.should('have.length', 1);
|
|
|
|
/**
|
|
* Tool title displayed
|
|
*/
|
|
cy.wrap($el)
|
|
.find('.ce-stub__title')
|
|
.should('have.text', 'non-existing tool');
|
|
}
|
|
});
|
|
});
|
|
|
|
it('should show Stub block if block tool throws error during construction', function () {
|
|
/**
|
|
* Mock of tool that triggers error during construction
|
|
*/
|
|
class ToolWithError extends ToolMock {
|
|
/**
|
|
* @param options - tool options
|
|
*/
|
|
constructor(options) {
|
|
super(options);
|
|
throw new Error('Tool error');
|
|
}
|
|
}
|
|
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'some text',
|
|
},
|
|
},
|
|
{
|
|
type: 'failedTool',
|
|
data: {},
|
|
},
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'some other text',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
tools: {
|
|
failedTool: ToolWithError,
|
|
},
|
|
})
|
|
.as('editorInstance');
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-block')
|
|
.should('have.length', 3);
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-block')
|
|
.each(($el, index) => {
|
|
/**
|
|
* Check that the second block is stub
|
|
*/
|
|
if (index === 1) {
|
|
cy.wrap($el)
|
|
.find('.ce-stub')
|
|
.should('have.length', 1);
|
|
|
|
/**
|
|
* Tool title displayed
|
|
*/
|
|
cy.wrap($el)
|
|
.find('.ce-stub__title')
|
|
.should('have.text', 'failedTool');
|
|
}
|
|
});
|
|
});
|
|
|
|
it('should insert default empty block when [] passed as data.blocks', function () {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [],
|
|
},
|
|
})
|
|
.as('editorInstance');
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-block')
|
|
.should('have.length', 1);
|
|
});
|
|
|
|
it('should insert default empty block when [] passed via blocks.render() API', function () {
|
|
cy.createEditor({})
|
|
.as('editorInstance');
|
|
|
|
cy.get<EditorJS>('@editorInstance')
|
|
.then((editor) => {
|
|
editor.blocks.render({
|
|
blocks: [],
|
|
});
|
|
});
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-block')
|
|
.should('have.length', 1);
|
|
});
|
|
});
|