mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-19 22:40:48 -07:00
test: dedupe registry checks; merge filter prototype loop
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -77,16 +77,13 @@ describe('Issues', function () {
|
|||||||
)
|
)
|
||||||
expect(html).toBe('BAR')
|
expect(html).toBe('BAR')
|
||||||
})
|
})
|
||||||
it('filter/tag maps are null-prototype; built-ins work (node + UMD)', async () => {
|
it('filter/tag maps are null-prototype (node + UMD)', async () => {
|
||||||
const tpl = `{{ 'a' | append: 'b' }}`
|
|
||||||
const nodeEngine = new Liquid()
|
const nodeEngine = new Liquid()
|
||||||
const umdEngine = new LiquidUMD()
|
const umdEngine = new LiquidUMD()
|
||||||
expect(Object.getPrototypeOf(nodeEngine.filters)).toBeNull()
|
expect(Object.getPrototypeOf(nodeEngine.filters)).toBeNull()
|
||||||
expect(Object.getPrototypeOf(nodeEngine.tags)).toBeNull()
|
expect(Object.getPrototypeOf(nodeEngine.tags)).toBeNull()
|
||||||
expect(Object.getPrototypeOf(umdEngine.filters)).toBeNull()
|
expect(Object.getPrototypeOf(umdEngine.filters)).toBeNull()
|
||||||
expect(Object.getPrototypeOf(umdEngine.tags)).toBeNull()
|
expect(Object.getPrototypeOf(umdEngine.tags)).toBeNull()
|
||||||
expect(await nodeEngine.parseAndRender(tpl)).toBe('ab')
|
|
||||||
expect(await umdEngine.parseAndRender(tpl)).toBe('ab')
|
|
||||||
})
|
})
|
||||||
it('lenientIf not working as expected in umd #313', async () => {
|
it('lenientIf not working as expected in umd #313', async () => {
|
||||||
const engine = new LiquidUMD({
|
const engine = new LiquidUMD({
|
||||||
|
|||||||
@@ -65,22 +65,13 @@ describe('liquid#registerFilter()', function () {
|
|||||||
it('should use a null-prototype map for filters', () => {
|
it('should use a null-prototype map for filters', () => {
|
||||||
expect(Object.getPrototypeOf(liquid.filters)).toBeNull()
|
expect(Object.getPrototypeOf(liquid.filters)).toBeNull()
|
||||||
})
|
})
|
||||||
it('should still resolve built-in filters', async () => {
|
it('should treat Object.prototype keys as unregistered unless explicitly registered', async () => {
|
||||||
expect(await liquid.parseAndRender(`{{ 'a' | append: 'b' }}`)).toBe('ab')
|
|
||||||
})
|
|
||||||
it('should not resolve names that exist only on Object.prototype', async () => {
|
|
||||||
const registered = new Set(Object.keys(liquid.filters))
|
const registered = new Set(Object.keys(liquid.filters))
|
||||||
|
const strict = new Liquid({ strictFilters: true })
|
||||||
for (const name of Object.getOwnPropertyNames(Object.prototype)) {
|
for (const name of Object.getOwnPropertyNames(Object.prototype)) {
|
||||||
if (registered.has(name)) continue
|
if (registered.has(name)) continue
|
||||||
const out = await liquid.parseAndRender(`{{ x | ${name} }}`, { x: 42 })
|
const out = await liquid.parseAndRender(`{{ x | ${name} }}`, { x: 42 })
|
||||||
expect(out).toBe('42')
|
expect(out).toBe('42')
|
||||||
}
|
|
||||||
})
|
|
||||||
it('should reject unknown filter names under strictFilters, including Object.prototype keys', async () => {
|
|
||||||
const strict = new Liquid({ strictFilters: true })
|
|
||||||
const registered = new Set(Object.keys(strict.filters))
|
|
||||||
for (const name of Object.getOwnPropertyNames(Object.prototype)) {
|
|
||||||
if (registered.has(name)) continue
|
|
||||||
await expect(strict.parseAndRender(`{{ 1 | ${name} }}`)).rejects.toThrow('undefined filter')
|
await expect(strict.parseAndRender(`{{ 1 | ${name} }}`)).rejects.toThrow('undefined filter')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user