mirror of
https://github.com/codex-team/editor.js
synced 2026-03-16 07:35:48 +01:00
* Bug Fix For When / Overides external text * Moved fix to blockEvents * Moved fix to blockEvents * Moved fix to blockEvents * Refactored test to simulate behaviour * Added fix to change log * Refactored test to mimick exact behaviour of the bug --------- Co-authored-by: Omotayo Obafemi <omotayo@testlio.com> Co-authored-by: Peter <specc.dev@gmail.com>
174 lines
3.9 KiB
TypeScript
174 lines
3.9 KiB
TypeScript
describe('Slash keydown', function () {
|
|
describe('pressed in empty block', function () {
|
|
it('should add "/" in a block and open Toolbox', () => {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: '',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.click()
|
|
.type('/');
|
|
|
|
/**
|
|
* Block content should contain slash
|
|
*/
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.invoke('text')
|
|
.should('eq', '/');
|
|
|
|
cy.get('[data-cy="toolbox"] .ce-popover__container')
|
|
.should('be.visible');
|
|
});
|
|
|
|
[
|
|
'ctrl',
|
|
'cmd',
|
|
].forEach((key) => {
|
|
it(`should not open Toolbox if Slash pressed with ${key}`, () => {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: '',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.click()
|
|
.type(`{${key}}/`);
|
|
|
|
cy.get('[data-cy="toolbox"] .ce-popover__container')
|
|
.should('not.be.visible');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('pressed in non-empty block', function () {
|
|
it('should not open Toolbox and just add the / char', () => {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: 'Hello',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.click()
|
|
.type('/');
|
|
|
|
cy.get('[data-cy="toolbox"] .ce-popover__container')
|
|
.should('not.be.visible');
|
|
|
|
/**
|
|
* Block content should contain slash
|
|
*/
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.invoke('text')
|
|
.should('eq', 'Hello/');
|
|
});
|
|
});
|
|
|
|
describe('pressed outside editor', function () {
|
|
it('should not modify any text outside editor when text block is selected', () => {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: '',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
cy.document().then((doc) => {
|
|
const title = doc.querySelector('h1');
|
|
|
|
if (title) {
|
|
title.setAttribute('data-cy', 'page-title');
|
|
}
|
|
});
|
|
|
|
// Step 1
|
|
// Click on the plus button and select the text option
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.click();
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-toolbar__plus')
|
|
.click({ force: true });
|
|
cy.get('[data-cy="toolbox"] .ce-popover__container')
|
|
.contains('Text')
|
|
.click();
|
|
|
|
// Step 2
|
|
// Select the 'Editor.js test page' text
|
|
cy.get('[data-cy=page-title]')
|
|
.invoke('attr', 'contenteditable', 'true')
|
|
.click()
|
|
.type('{selectall}')
|
|
.invoke('removeAttr', 'contenteditable');
|
|
|
|
// Step 3
|
|
// Press the Slash key
|
|
cy.get('[data-cy=page-title]')
|
|
.trigger('keydown', { key: '/',
|
|
code: 'Slash',
|
|
which: 191 });
|
|
|
|
cy.get('[data-cy=page-title]').should('have.text', 'Editor.js test page');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('CMD+Slash keydown', function () {
|
|
it('should open Block Tunes', () => {
|
|
cy.createEditor({
|
|
data: {
|
|
blocks: [
|
|
{
|
|
type: 'paragraph',
|
|
data: {
|
|
text: '',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
cy.get('[data-cy=editorjs]')
|
|
.find('.ce-paragraph')
|
|
.click()
|
|
.type('{cmd}/');
|
|
|
|
cy.get('[data-cy="block-tunes"] .ce-popover__container')
|
|
.should('be.visible');
|
|
});
|
|
});
|