UNPKG

appblocks

Version:

A lightweight javascript library for building micro apps for the front-end.

32 lines (27 loc) 1.48 kB
import { AppBlock } from 'src/core.js'; import { createMockTemplate, createMockAppBlockConfig, resetDOM } from 'tests/fixtures/mockData.js'; describe('Placeholder delimiters - edge cases', () => { afterEach(() => resetDOM()); test('multi-character delimiters with regex chars are supported', () => { const template = createMockTemplate('<div><%data.name%></div>'); const config = createMockAppBlockConfig({ template, data: { name: 'Regex' }, delimiters: ['<%', '%>'] }); const app = new AppBlock(config); expect(app.el.textContent).toContain('Regex'); }); test('attribute placeholders honor custom delimiters', () => { const template = createMockTemplate('<div data-title="<<data.title>>">x</div>'); const config = createMockAppBlockConfig({ template, data: { title: 'AttrOk' }, delimiters: ['<<', '>>'] }); const app = new AppBlock(config); const el = app.el.querySelector('div'); expect(el.getAttribute('data-title')).toBe('AttrOk'); }); test('non-string or invalid delimiter values fall back to default', () => { const spy = jest.spyOn(console, 'error').mockImplementation(() => {}); const template = createMockTemplate('<div>{data.name}</div>'); const config = createMockAppBlockConfig({ template, data: { name: 'Fallback' }, delimiters: [null, 5] }); const app = new AppBlock(config); expect(app.el.textContent).toContain('Fallback'); expect(spy).toHaveBeenCalled(); spy.mockRestore(); }); });