mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import Plain from 'slate-plain-serializer';
|
|
|
|
import BracesPlugin from './braces';
|
|
|
|
declare global {
|
|
interface Window {
|
|
KeyboardEvent: any;
|
|
}
|
|
}
|
|
|
|
describe('braces', () => {
|
|
const handler = BracesPlugin().onKeyDown;
|
|
|
|
it('adds closing braces around empty value', () => {
|
|
const change = Plain.deserialize('').change();
|
|
const event = new window.KeyboardEvent('keydown', { key: '(' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('()');
|
|
});
|
|
|
|
it('adds closing braces around a value', () => {
|
|
const change = Plain.deserialize('foo').change();
|
|
const event = new window.KeyboardEvent('keydown', { key: '(' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('(foo)');
|
|
});
|
|
|
|
it('adds closing braces around the following value only', () => {
|
|
const change = Plain.deserialize('foo bar ugh').change();
|
|
let event;
|
|
event = new window.KeyboardEvent('keydown', { key: '(' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('(foo) bar ugh');
|
|
|
|
// Wrap bar
|
|
change.move(5);
|
|
event = new window.KeyboardEvent('keydown', { key: '(' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('(foo) (bar) ugh');
|
|
|
|
// Create empty parens after (bar)
|
|
change.move(4);
|
|
event = new window.KeyboardEvent('keydown', { key: '(' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('(foo) (bar)() ugh');
|
|
});
|
|
|
|
it('adds closing braces outside a selector', () => {
|
|
const change = Plain.deserialize('sumrate(metric{namespace="dev", cluster="c1"}[2m])').change();
|
|
let event;
|
|
change.move(3);
|
|
event = new window.KeyboardEvent('keydown', { key: '(' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('sum(rate(metric{namespace="dev", cluster="c1"}[2m]))');
|
|
});
|
|
|
|
it('removes closing brace when opening brace is removed', () => {
|
|
const change = Plain.deserialize('time()').change();
|
|
let event;
|
|
change.move(5);
|
|
event = new window.KeyboardEvent('keydown', { key: 'Backspace' });
|
|
handler(event, change);
|
|
expect(Plain.serialize(change.value)).toEqual('time');
|
|
});
|
|
|
|
it('keeps closing brace when opening brace is removed and inner values exist', () => {
|
|
const change = Plain.deserialize('time(value)').change();
|
|
let event;
|
|
change.move(5);
|
|
event = new window.KeyboardEvent('keydown', { key: 'Backspace' });
|
|
const handled = handler(event, change);
|
|
expect(handled).toBeFalsy();
|
|
});
|
|
});
|