From 74fbd55bb8fa51b5b11336689b58cfa1205bcef7 Mon Sep 17 00:00:00 2001 From: Ilan Levy Date: Sun, 9 Aug 2020 11:11:28 +0300 Subject: [PATCH 1/2] fix filter signature to allow params, issue in test --- src/containers.ts | 2 +- test/filters.spec.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/containers.ts b/src/containers.ts index 46e9c699..172cea07 100644 --- a/src/containers.ts +++ b/src/containers.ts @@ -25,7 +25,7 @@ export type HelperFunction = ( config: SqrlConfig ) => string | Promise -export type FilterFunction = (str: string) => any | Promise +export type FilterFunction = (obj: any, ...filterParameters: any[]) => any | Promise interface EscapeMap { '&': '&' diff --git a/test/filters.spec.ts b/test/filters.spec.ts index c3a00e6b..37cc0950 100644 --- a/test/filters.spec.ts +++ b/test/filters.spec.ts @@ -28,5 +28,14 @@ describe('Simple render checks', () => { '' ) }) + it('Custom filter with parameters', () => { + filters.define('customFilterWithParams', function (obj: any, ...filterParameters: any[]): string { + const [joinStr, lastJoinStr] = filterParameters + const last = obj.splice(-1) + return obj.join(joinStr) + lastJoinStr + last; + }) + expect(render(`{{ it.fruits | customFilterWithParams(', ', ' or ') /}}?`, { fruits: [1, 2, 3] })) + .toEqual('Banana, Kiwi or Apple?') + }) }) }) From 2462d91626c56e435bf9c89af570cd3de2ed13e7 Mon Sep 17 00:00:00 2001 From: Ilan Levy Date: Sun, 9 Aug 2020 11:19:32 +0300 Subject: [PATCH 2/2] fix mistake in test --- test/filters.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/filters.spec.ts b/test/filters.spec.ts index 37cc0950..90d3210a 100644 --- a/test/filters.spec.ts +++ b/test/filters.spec.ts @@ -34,8 +34,8 @@ describe('Simple render checks', () => { const last = obj.splice(-1) return obj.join(joinStr) + lastJoinStr + last; }) - expect(render(`{{ it.fruits | customFilterWithParams(', ', ' or ') /}}?`, { fruits: [1, 2, 3] })) - .toEqual('Banana, Kiwi or Apple?') + expect(render(`{{ it.fruits | customFilterWithParams(', ', ' or ') /}} ?`, { fruits: ["Apple", "Banana", "Kiwi"] })) + .toEqual('Apple, Banana or Kiwi ?') }) }) })