Spaces:
Runtime error
Runtime error
File size: 2,071 Bytes
46252cd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import { renderTemplate } from './template-render';
describe('renderTemplate', () => {
describe('canonical double-brace {{name}}', () => {
it('substitutes a known placeholder', () => {
expect(renderTemplate('Hi {{name}}', { name: 'Sam' })).toBe('Hi Sam');
});
it('tolerates surrounding whitespace', () => {
expect(renderTemplate('Hi {{ name }}', { name: 'Sam' })).toBe('Hi Sam');
});
it('supports dotted/dashed keys', () => {
expect(renderTemplate('{{first.name}}-{{order-id}}', { 'first.name': 'A', 'order-id': '7' })).toBe('A-7');
});
it('leaves an unknown placeholder literal', () => {
expect(renderTemplate('Hi {{name}}', {})).toBe('Hi {{name}}');
});
});
describe('legacy single-brace {name} (deprecated, still supported)', () => {
it('substitutes a known placeholder', () => {
expect(renderTemplate('Hi {name}', { name: 'Sam' })).toBe('Hi Sam');
});
it('leaves an unknown placeholder literal', () => {
expect(renderTemplate('Hi {name}', {})).toBe('Hi {name}');
});
});
describe('mixed + disambiguation', () => {
it('substitutes both conventions in one string', () => {
expect(renderTemplate('{greeting}, {{name}}!', { greeting: 'Hello', name: 'Sam' })).toBe('Hello, Sam!');
});
it('does NOT mangle {{name}} into {value} (double-brace consumed as a unit)', () => {
expect(renderTemplate('{{name}}', { name: 'X' })).toBe('X');
});
});
describe('edge cases', () => {
it('returns an empty body unchanged', () => {
expect(renderTemplate('', { name: 'Sam' })).toBe('');
});
it('leaves non-placeholder braces untouched', () => {
expect(renderTemplate('a { b } c', { b: 'X' })).toBe('a { b } c'); // spaces => not a legacy placeholder
});
it('substitutes an explicitly-provided empty-string value', () => {
// hasOwnProperty semantics: an explicit '' substitutes to '' (the legacy `||` renderer left it literal).
expect(renderTemplate('[{name}]', { name: '' })).toBe('[]');
});
});
});
|