Skip to content

Commit

Permalink
allow return arbitrary value from filter extension
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryosuke839 committed Oct 30, 2023
1 parent 85062fe commit 5d8a0bd
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/core/src/lib/functional-extensions/filter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export interface FunctionalFilterOptions {

export type FunctionalFilter = (
options: FunctionalFilterOptions
) => Promise<string>;
) => Promise<any>;

export const createFilterExtension = (
name: string,
Expand Down
28 changes: 28 additions & 0 deletions packages/core/test/functional-extensions/filter.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,31 @@ it('The extensions created by createFilter function should work with template en
expect(queries[0]).toBe('SELECT $1');
expect(bindings[0].get('$1')).toBe('QAQ3QQQQ');
});

it('The extensions can return arbitrary value', async () => {
// Arrange
const testFilter: FunctionalFilter = async ({ args, value }) =>
({id: args['aa'], text: `QAQ${args['aa']}${value}`});
const [Builder, Runner] = createFilterExtension('test', testFilter);
const builder = new Builder({}, '');
const runner = new Runner({}, '');
const {
compiler,
loader,
executeTemplate,
getCreatedQueries,
getCreatedBinding,
} = await createTestCompiler({ additionalExtensions: [builder, runner] });
const { compiledData } = await compiler.compile(
`SELECT {{ (context.params.id | test(aa=3)).id }}, {{ (context.params.id | test(aa=3)).text }}`
);
loader.setSource('test', compiledData);
// Act
await executeTemplate('test', { id: 'QQQQ' });
const queries = await getCreatedQueries();
const bindings = await getCreatedBinding();
// Assert
expect(queries[0]).toBe('SELECT $1 $2');
expect(bindings[0].get('$1')).toBe(3);
expect(bindings[0].get('$2')).toBe('QAQ3QQQQ');
});

0 comments on commit 5d8a0bd

Please sign in to comment.