mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-14 11:53:49 +00:00
7cfe7c0d78
* refactor: remove unused code * feat: add human readable values to message parsing --------- Co-authored-by: Fabian Posenau <fabian@fphome.de> Co-authored-by: cv <34649812+cpvalente@users.noreply.github.com>
99 lines
3.0 KiB
TypeScript
99 lines
3.0 KiB
TypeScript
import { parseTemplateNested } from './integrationUtils.js';
|
|
|
|
describe('parseTemplateNested()', () => {
|
|
it('parses string with a single-level variable name', () => {
|
|
const store = { timer: 10 };
|
|
const templateString = '/test/{{timer}}';
|
|
const result = parseTemplateNested(templateString, store);
|
|
expect(result).toEqual('/test/10');
|
|
});
|
|
|
|
it('parses string with a nested variable name', () => {
|
|
const store = { timer: { clock: 10 } };
|
|
const templateString = '/timer/{{timer.clock}}';
|
|
const result = parseTemplateNested(templateString, store);
|
|
expect(result).toEqual('/timer/10');
|
|
});
|
|
|
|
it('parses string with multiple variables', () => {
|
|
const mockState = { test1: 'that', test2: 'this' };
|
|
const testString = '{{test1}} should replace {{test2}}';
|
|
const expected = `${mockState.test1} should replace ${mockState.test2}`;
|
|
|
|
const result = parseTemplateNested(testString, mockState);
|
|
expect(result).toStrictEqual(expected);
|
|
});
|
|
|
|
it('correctly parses a string without templates', () => {
|
|
const testString = 'That should replace {test}';
|
|
|
|
const result = parseTemplateNested(testString, {});
|
|
expect(result).toStrictEqual(testString);
|
|
});
|
|
|
|
it('handles scenarios with missing variables', () => {
|
|
// by failing to provide a value, we give visibility to
|
|
// potential issues in the given string
|
|
const mockState = { test1: 'that', test2: 'this' };
|
|
const testString = '{{test1}} should replace {{test2}}, but not {{test3}}';
|
|
const expected = `${mockState.test1} should replace ${mockState.test2}, but not {{test3}}`;
|
|
|
|
const result = parseTemplateNested(testString, mockState);
|
|
expect(result).toStrictEqual(expected);
|
|
});
|
|
});
|
|
|
|
describe('parseNestedTemplate() -> resolveAliasData()', () => {
|
|
it('resolves data through callback', () => {
|
|
const data = {
|
|
not: {
|
|
so: {
|
|
easy: '3',
|
|
},
|
|
},
|
|
};
|
|
const aliases = {
|
|
easy: { key: 'not.so.easy', cb: (value: string) => `testing-${value}` },
|
|
};
|
|
|
|
const easyParse = parseTemplateNested('{{human.easy}}', data, aliases);
|
|
expect(easyParse).toBe('testing-3');
|
|
});
|
|
it('handles a mixed operation', () => {
|
|
const data = {
|
|
not: {
|
|
so: {
|
|
easy: '3',
|
|
},
|
|
},
|
|
other: {
|
|
value: 42,
|
|
},
|
|
};
|
|
const aliases = {
|
|
easy: { key: 'not.so.easy', cb: (value: string) => `testing-${value}` },
|
|
};
|
|
|
|
const easyParse = parseTemplateNested('{{other.value}} to {{human.easy}}', data, aliases);
|
|
expect(easyParse).toBe('42 to testing-3');
|
|
});
|
|
it('returns given key when not found', () => {
|
|
const data = {
|
|
not: {
|
|
so: {
|
|
easy: '3',
|
|
},
|
|
},
|
|
other: {
|
|
value: 5,
|
|
},
|
|
};
|
|
const aliases = {
|
|
easy: { key: 'not.so.easy', cb: (value: string) => `testing-${value}` },
|
|
};
|
|
|
|
const easyParse = parseTemplateNested('{{other.value}} to {{human.easy}} {{human.not.found}}', data, aliases);
|
|
expect(easyParse).toBe('5 to testing-3 {{human.not.found}}');
|
|
});
|
|
});
|