braces.test.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // @ts-ignore
  2. import Plain from 'slate-plain-serializer';
  3. import BracesPlugin from './braces';
  4. declare global {
  5. interface Window {
  6. KeyboardEvent: any;
  7. }
  8. }
  9. describe('braces', () => {
  10. const handler = BracesPlugin().onKeyDown;
  11. it('adds closing braces around empty value', () => {
  12. const change = Plain.deserialize('').change();
  13. const event = new window.KeyboardEvent('keydown', { key: '(' });
  14. handler(event, change);
  15. expect(Plain.serialize(change.value)).toEqual('()');
  16. });
  17. it('removes closing brace when opening brace is removed', () => {
  18. const change = Plain.deserialize('time()').change();
  19. let event;
  20. change.move(5);
  21. event = new window.KeyboardEvent('keydown', { key: 'Backspace' });
  22. handler(event, change);
  23. expect(Plain.serialize(change.value)).toEqual('time');
  24. });
  25. it('keeps closing brace when opening brace is removed and inner values exist', () => {
  26. const change = Plain.deserialize('time(value)').change();
  27. let event;
  28. change.move(5);
  29. event = new window.KeyboardEvent('keydown', { key: 'Backspace' });
  30. const handled = handler(event, change);
  31. expect(handled).toBeFalsy();
  32. });
  33. });