mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import PlaceholdersBuffer from './PlaceholdersBuffer';
|
|
|
|
describe('PlaceholdersBuffer', () => {
|
|
it('does nothing if no placeholders are defined', () => {
|
|
const text = 'metric';
|
|
const buffer = new PlaceholdersBuffer(text);
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(false);
|
|
expect(buffer.toString()).toBe(text);
|
|
expect(buffer.getNextMoveOffset()).toBe(0);
|
|
});
|
|
|
|
it('respects the traversal order of placeholders', () => {
|
|
const text = 'sum($2 offset $1) by ($3)';
|
|
const buffer = new PlaceholdersBuffer(text);
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('sum( offset ) by ()');
|
|
expect(buffer.getNextMoveOffset()).toBe(12);
|
|
|
|
buffer.setNextPlaceholderValue('1h');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('sum( offset 1h) by ()');
|
|
expect(buffer.getNextMoveOffset()).toBe(-10);
|
|
|
|
buffer.setNextPlaceholderValue('metric');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('sum(metric offset 1h) by ()');
|
|
expect(buffer.getNextMoveOffset()).toBe(16);
|
|
|
|
buffer.setNextPlaceholderValue('label');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(false);
|
|
expect(buffer.toString()).toBe('sum(metric offset 1h) by (label)');
|
|
expect(buffer.getNextMoveOffset()).toBe(0);
|
|
});
|
|
|
|
it('respects the traversal order of adjacent placeholders', () => {
|
|
const text = '$1$3$2$4';
|
|
const buffer = new PlaceholdersBuffer(text);
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('');
|
|
expect(buffer.getNextMoveOffset()).toBe(0);
|
|
|
|
buffer.setNextPlaceholderValue('1');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('1');
|
|
expect(buffer.getNextMoveOffset()).toBe(0);
|
|
|
|
buffer.setNextPlaceholderValue('2');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('12');
|
|
expect(buffer.getNextMoveOffset()).toBe(-1);
|
|
|
|
buffer.setNextPlaceholderValue('3');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(true);
|
|
expect(buffer.toString()).toBe('132');
|
|
expect(buffer.getNextMoveOffset()).toBe(1);
|
|
|
|
buffer.setNextPlaceholderValue('4');
|
|
|
|
expect(buffer.hasPlaceholders()).toBe(false);
|
|
expect(buffer.toString()).toBe('1324');
|
|
expect(buffer.getNextMoveOffset()).toBe(0);
|
|
});
|
|
});
|