mirror of
https://github.com/penpot/penpot.git
synced 2025-02-16 03:58:20 -05:00
36 lines
1.5 KiB
JavaScript
36 lines
1.5 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|