braces.test.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import Plain from 'slate-plain-serializer';
  2. import BracesPlugin from './braces';
  3. declare global {
  4. interface Window {
  5. KeyboardEvent: any;
  6. }
  7. }
  8. describe('braces', () => {
  9. const handler = BracesPlugin().onKeyDown;
  10. it('adds closing braces around empty value', () => {
  11. const change = Plain.deserialize('').change();
  12. const event = new window.KeyboardEvent('keydown', { key: '(' });
  13. handler(event, change);
  14. expect(Plain.serialize(change.value)).toEqual('()');
  15. });
  16. it('adds closing braces around a value', () => {
  17. const change = Plain.deserialize('foo').change();
  18. const event = new window.KeyboardEvent('keydown', { key: '(' });
  19. handler(event, change);
  20. expect(Plain.serialize(change.value)).toEqual('(foo)');
  21. });
  22. it('adds closing braces around the following value only', () => {
  23. const change = Plain.deserialize('foo bar ugh').change();
  24. let event;
  25. event = new window.KeyboardEvent('keydown', { key: '(' });
  26. handler(event, change);
  27. expect(Plain.serialize(change.value)).toEqual('(foo) bar ugh');
  28. // Wrap bar
  29. change.move(5);
  30. event = new window.KeyboardEvent('keydown', { key: '(' });
  31. handler(event, change);
  32. expect(Plain.serialize(change.value)).toEqual('(foo) (bar) ugh');
  33. // Create empty parens after (bar)
  34. change.move(4);
  35. event = new window.KeyboardEvent('keydown', { key: '(' });
  36. handler(event, change);
  37. expect(Plain.serialize(change.value)).toEqual('(foo) (bar)() ugh');
  38. });
  39. it('adds closing braces outside a selector', () => {
  40. const change = Plain.deserialize('sumrate(metric{namespace="dev", cluster="c1"}[2m])').change();
  41. let event;
  42. change.move(3);
  43. event = new window.KeyboardEvent('keydown', { key: '(' });
  44. handler(event, change);
  45. expect(Plain.serialize(change.value)).toEqual('sum(rate(metric{namespace="dev", cluster="c1"}[2m]))');
  46. });
  47. it('removes closing brace when opening brace is removed', () => {
  48. const change = Plain.deserialize('time()').change();
  49. let event;
  50. change.move(5);
  51. event = new window.KeyboardEvent('keydown', { key: 'Backspace' });
  52. handler(event, change);
  53. expect(Plain.serialize(change.value)).toEqual('time');
  54. });
  55. it('keeps closing brace when opening brace is removed and inner values exist', () => {
  56. const change = Plain.deserialize('time(value)').change();
  57. let event;
  58. change.move(5);
  59. event = new window.KeyboardEvent('keydown', { key: 'Backspace' });
  60. const handled = handler(event, change);
  61. expect(handled).toBeFalsy();
  62. });
  63. });