1
0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-05-21 03:26:11 +02:00

Import text-editor code into the repository

This commit is contained in:
Andrey Antukh 2024-11-19 17:05:30 +01:00
parent 68397edd4d
commit 04a0d867b0
65 changed files with 11112 additions and 7 deletions
frontend/text-editor/editor/controllers

View file

@ -0,0 +1,36 @@
import { expect, describe, test, vi } from 'vitest'
import ChangeController from './ChangeController'
describe("ChangeController", () => {
test("Creating a ChangeController without a valid time should throw", () => {
expect(() => new ChangeController(Infinity)).toThrowError('Invalid time')
});
test("A ChangeController should dispatch an event when `notifyImmediately` is called", () => {
const changeListener = vi.fn();
const changeController = new ChangeController(10);
changeController.addEventListener("change", changeListener)
changeController.notifyImmediately();
expect(changeController.hasPendingChanges).toBe(false);
expect(changeListener).toBeCalled(1);
});
test("A ChangeController should dispatch an event when `notifyDebounced` is called", async () => {
return new Promise((resolve) => {
const changeController = new ChangeController(10);
changeController.addEventListener("change", () => resolve());
changeController.notifyDebounced();
expect(changeController.hasPendingChanges).toBe(true);
});
});
test("A ChangeController should dispatch an event when `notifyDebounced` is called and disposed is called right after", async () => {
return new Promise((resolve) => {
const changeController = new ChangeController(10);
changeController.addEventListener("change", () => resolve());
changeController.notifyDebounced();
expect(changeController.hasPendingChanges).toBe(true);
changeController.dispose();
});
});
});