import Header from '@editorjs/header'; import { ToolboxConfig } from '../../../types'; describe('Editor i18n', () => { context('Toolbox', () => { it('should translate tool title in a toolbox', function () { if (this && this.editorInstance) { this.editorInstance.destroy(); } const toolNamesDictionary = { Heading: 'Заголовок', }; cy.createEditor({ tools: { header: Header, }, i18n: { messages: { toolNames: toolNamesDictionary, }, }, }).as('editorInstance'); cy.get('[data-cy=editorjs]') .get('div.ce-block') .click(); cy.get('[data-cy=editorjs]') .get('div.ce-toolbar__plus') .click(); cy.get('[data-cy=editorjs]') .get('div.ce-popover__item[data-item-name=header]') .should('contain.text', toolNamesDictionary.Heading); }); it('should translate titles of toolbox entries', function () { if (this && this.editorInstance) { this.editorInstance.destroy(); } const toolNamesDictionary = { Title1: 'Название 1', Title2: 'Название 2', }; /** * Tool with several toolbox entries configured */ class TestTool { /** * Returns toolbox config as list of entries */ public static get toolbox(): ToolboxConfig { return [ { title: 'Title1', icon: 'Icon 1', }, { title: 'Title2', icon: 'Icon 2', }, ]; } } cy.createEditor({ tools: { testTool: TestTool, }, i18n: { messages: { toolNames: toolNamesDictionary, }, }, }).as('editorInstance'); cy.get('[data-cy=editorjs]') .get('div.ce-block') .click(); cy.get('[data-cy=editorjs]') .get('div.ce-toolbar__plus') .click(); cy.get('[data-cy=editorjs]') .get('div.ce-popover__item[data-item-name=testTool]') .first() .should('contain.text', toolNamesDictionary.Title1); cy.get('[data-cy=editorjs]') .get('div.ce-popover__item[data-item-name=testTool]') .last() .should('contain.text', toolNamesDictionary.Title2); }); it('should use capitalized tool name as translation key if toolbox title is missing', function () { if (this && this.editorInstance) { this.editorInstance.destroy(); } /** * Tool class allowing to test case when capitalized tool name is used as translation key if toolbox title is missing */ class TestTool { /** * Returns toolbox config without title */ public static get toolbox(): ToolboxConfig { return { title: '', icon: '', }; } } const toolNamesDictionary = { TestTool: 'ТестТул', }; cy.createEditor({ tools: { testTool: TestTool, }, i18n: { messages: { toolNames: toolNamesDictionary, }, }, }).as('editorInstance'); cy.get('[data-cy=editorjs]') .get('div.ce-block') .click(); cy.get('[data-cy=editorjs]') .get('div.ce-toolbar__plus') .click(); cy.get('[data-cy=editorjs]') .get('div.ce-popover__item[data-item-name=testTool]') .should('contain.text', toolNamesDictionary.TestTool); }); }); });