mirror of
https://github.com/penpot/penpot.git
synced 2025-05-15 09:26:37 +02:00
📎 Fix some missing changes
This commit is contained in:
parent
b80ccbec0f
commit
c8c83c1e1d
58 changed files with 551 additions and 504 deletions
100
frontend/text-editor/src/editor/TextEditor.test.js
Normal file
100
frontend/text-editor/src/editor/TextEditor.test.js
Normal file
|
@ -0,0 +1,100 @@
|
|||
import { describe, test, expect } from "vitest";
|
||||
import { TextEditor } from "./TextEditor.js";
|
||||
|
||||
/* @vitest-environment jsdom */
|
||||
describe("TextEditor", () => {
|
||||
test("Creating TextEditor without element should throw", () => {
|
||||
expect(() => new TextEditor()).toThrowError("Invalid text editor element");
|
||||
});
|
||||
|
||||
test("Creating TextEditor with element should success", () => {
|
||||
expect(new TextEditor(document.createElement("div"))).toBeInstanceOf(
|
||||
TextEditor,
|
||||
);
|
||||
});
|
||||
|
||||
test("isEmpty should return true when editor is empty", () => {
|
||||
const textEditor = new TextEditor(document.createElement("div"));
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
expect(textEditor.isEmpty).toBe(true);
|
||||
});
|
||||
|
||||
test("Num paragraphs should return 1 when empty", () => {
|
||||
const textEditor = new TextEditor(document.createElement("div"));
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
expect(textEditor.numParagraphs).toBe(1);
|
||||
});
|
||||
|
||||
test("Num paragraphs should return the number of paragraphs", () => {
|
||||
const textEditor = new TextEditor(document.createElement("div"));
|
||||
textEditor.root = textEditor.createRoot([
|
||||
textEditor.createParagraph([
|
||||
textEditor.createInlineFromString("Hello, World!"),
|
||||
]),
|
||||
textEditor.createParagraph([textEditor.createInlineFromString("")]),
|
||||
textEditor.createParagraph([
|
||||
textEditor.createInlineFromString("¡Hola, Mundo!"),
|
||||
]),
|
||||
textEditor.createParagraph([
|
||||
textEditor.createInlineFromString("Hallo, Welt!"),
|
||||
]),
|
||||
]);
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
expect(textEditor.numParagraphs).toBe(4);
|
||||
});
|
||||
|
||||
test("Disposing a TextEditor nullifies everything", () => {
|
||||
const textEditor = new TextEditor(document.createElement("div"));
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
textEditor.dispose();
|
||||
expect(textEditor.root).toBe(null);
|
||||
expect(textEditor.element).toBe(null);
|
||||
});
|
||||
|
||||
test("TextEditor focus should focus the contenteditable element", () => {
|
||||
const textEditorElement = document.createElement("div");
|
||||
document.body.appendChild(textEditorElement);
|
||||
const textEditor = new TextEditor(textEditorElement);
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
textEditor.focus();
|
||||
expect(document.activeElement).toBe(textEditor.element);
|
||||
});
|
||||
|
||||
test("TextEditor blur should blur the contenteditable element", () => {
|
||||
const textEditorElement = document.createElement("div");
|
||||
document.body.appendChild(textEditorElement);
|
||||
const textEditor = new TextEditor(textEditorElement);
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
textEditor.focus();
|
||||
textEditor.blur();
|
||||
expect(document.activeElement).not.toBe(textEditor.element);
|
||||
});
|
||||
|
||||
test("TextEditor focus -> blur -> focus should restore old selection", () => {
|
||||
const textEditorElement = document.createElement("div");
|
||||
document.body.appendChild(textEditorElement);
|
||||
const textEditor = new TextEditor(textEditorElement);
|
||||
textEditor.root = textEditor.createRoot([
|
||||
textEditor.createParagraph([
|
||||
textEditor.createInlineFromString("Hello, World!"),
|
||||
]),
|
||||
]);
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
textEditor.focus();
|
||||
textEditor.blur();
|
||||
textEditor.focus();
|
||||
expect(document.activeElement).toBe(textEditor.element);
|
||||
});
|
||||
|
||||
test("TextEditor selectAll should select all the contenteditable", () => {
|
||||
const selection = document.getSelection();
|
||||
const textEditorElement = document.createElement("div");
|
||||
document.body.appendChild(textEditorElement);
|
||||
const textEditor = new TextEditor(textEditorElement);
|
||||
expect(textEditor).toBeInstanceOf(TextEditor);
|
||||
textEditor.focus();
|
||||
textEditor.selectAll();
|
||||
expect(document.activeElement).toBe(textEditor.element);
|
||||
expect(selection.containsNode(textEditor.root));
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue