|
@@ -5,15 +5,29 @@ import { FilterParameter } from '../../../common/types/common-types';
|
|
|
import { ProductTranslation } from '../../../entity/product/product-translation.entity';
|
|
import { ProductTranslation } from '../../../entity/product/product-translation.entity';
|
|
|
import { Product } from '../../../entity/product/product.entity';
|
|
import { Product } from '../../../entity/product/product.entity';
|
|
|
|
|
|
|
|
-import { parseFilterParams } from './parse-filter-params';
|
|
|
|
|
|
|
+import { parseFilterParams, WhereCondition, WhereGroup } from './parse-filter-params';
|
|
|
import { MockConnection } from './parse-sort-params.spec';
|
|
import { MockConnection } from './parse-sort-params.spec';
|
|
|
|
|
|
|
|
|
|
+// Helper function to check if a result is a WhereCondition (not a WhereGroup)
|
|
|
|
|
+function isWhereCondition(item: WhereCondition | WhereGroup): item is WhereCondition {
|
|
|
|
|
+ return 'clause' in item;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Helper function to check if a result is a WhereGroup
|
|
|
|
|
+function isWhereGroup(item: WhereCondition | WhereGroup): item is WhereGroup {
|
|
|
|
|
+ return 'conditions' in item;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
describe('parseFilterParams()', () => {
|
|
describe('parseFilterParams()', () => {
|
|
|
it('works with no params', () => {
|
|
it('works with no params', () => {
|
|
|
const connection = new MockConnection();
|
|
const connection = new MockConnection();
|
|
|
connection.setColumns(Product, [{ propertyName: 'id' }, { propertyName: 'image' }]);
|
|
connection.setColumns(Product, [{ propertyName: 'id' }, { propertyName: 'image' }]);
|
|
|
|
|
|
|
|
- const result = parseFilterParams(connection as any, Product, {});
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams: {},
|
|
|
|
|
+ });
|
|
|
expect(result).toEqual([]);
|
|
expect(result).toEqual([]);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -25,9 +39,14 @@ describe('parseFilterParams()', () => {
|
|
|
eq: 'foo',
|
|
eq: 'foo',
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.name = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 'foo' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.name = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 'foo' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('works with multiple params', () => {
|
|
it('works with multiple params', () => {
|
|
@@ -41,11 +60,17 @@ describe('parseFilterParams()', () => {
|
|
|
eq: '123',
|
|
eq: '123',
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.name = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 'foo' });
|
|
|
|
|
- expect(result[1].clause).toBe('product.id = :arg2');
|
|
|
|
|
- expect(result[1].parameters).toEqual({ arg2: '123' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ const second = result[1];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.name = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 'foo' });
|
|
|
|
|
+ expect(isWhereCondition(second) && second.clause).toBe('product.id = :arg2');
|
|
|
|
|
+ expect(isWhereCondition(second) && second.parameters).toEqual({ arg2: '123' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('works with localized fields', () => {
|
|
it('works with localized fields', () => {
|
|
@@ -65,11 +90,17 @@ describe('parseFilterParams()', () => {
|
|
|
eq: '123',
|
|
eq: '123',
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product__translations.name = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 'foo' });
|
|
|
|
|
- expect(result[1].clause).toBe('product.id = :arg2');
|
|
|
|
|
- expect(result[1].parameters).toEqual({ arg2: '123' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ const second = result[1];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product__translations.name = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 'foo' });
|
|
|
|
|
+ expect(isWhereCondition(second) && second.clause).toBe('product.id = :arg2');
|
|
|
|
|
+ expect(isWhereCondition(second) && second.parameters).toEqual({ arg2: '123' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('string operators', () => {
|
|
describe('string operators', () => {
|
|
@@ -81,9 +112,14 @@ describe('parseFilterParams()', () => {
|
|
|
eq: 'foo',
|
|
eq: 'foo',
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.name = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 'foo' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.name = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 'foo' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('contains', () => {
|
|
it('contains', () => {
|
|
@@ -94,9 +130,14 @@ describe('parseFilterParams()', () => {
|
|
|
contains: 'foo',
|
|
contains: 'foo',
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.name LIKE :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: '%foo%' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.name LIKE :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: '%foo%' });
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -109,9 +150,14 @@ describe('parseFilterParams()', () => {
|
|
|
eq: 123,
|
|
eq: 123,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.price = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 123 });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.price = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 123 });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('lt', () => {
|
|
it('lt', () => {
|
|
@@ -122,9 +168,14 @@ describe('parseFilterParams()', () => {
|
|
|
lt: 123,
|
|
lt: 123,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.price < :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 123 });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.price < :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 123 });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('lte', () => {
|
|
it('lte', () => {
|
|
@@ -135,9 +186,14 @@ describe('parseFilterParams()', () => {
|
|
|
lte: 123,
|
|
lte: 123,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.price <= :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 123 });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.price <= :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 123 });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('gt', () => {
|
|
it('gt', () => {
|
|
@@ -148,9 +204,14 @@ describe('parseFilterParams()', () => {
|
|
|
gt: 123,
|
|
gt: 123,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.price > :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 123 });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.price > :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 123 });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('gte', () => {
|
|
it('gte', () => {
|
|
@@ -161,9 +222,14 @@ describe('parseFilterParams()', () => {
|
|
|
gte: 123,
|
|
gte: 123,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.price >= :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: 123 });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.price >= :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: 123 });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('between', () => {
|
|
it('between', () => {
|
|
@@ -177,9 +243,14 @@ describe('parseFilterParams()', () => {
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.price BETWEEN :arg1_a AND :arg1_b');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1_a: 10, arg1_b: 50 });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.price BETWEEN :arg1_a AND :arg1_b');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1_a: 10, arg1_b: 50 });
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -192,9 +263,14 @@ describe('parseFilterParams()', () => {
|
|
|
eq: new Date('2018-01-01T10:00:00.000Z'),
|
|
eq: new Date('2018-01-01T10:00:00.000Z'),
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.createdAt = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: '2018-01-01 10:00:00.000' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.createdAt = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: '2018-01-01 10:00:00.000' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('before', () => {
|
|
it('before', () => {
|
|
@@ -205,9 +281,14 @@ describe('parseFilterParams()', () => {
|
|
|
before: new Date('2018-01-01T10:00:00.000Z'),
|
|
before: new Date('2018-01-01T10:00:00.000Z'),
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.createdAt < :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: '2018-01-01 10:00:00.000' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.createdAt < :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: '2018-01-01 10:00:00.000' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('after', () => {
|
|
it('after', () => {
|
|
@@ -218,9 +299,14 @@ describe('parseFilterParams()', () => {
|
|
|
after: new Date('2018-01-01T10:00:00.000Z'),
|
|
after: new Date('2018-01-01T10:00:00.000Z'),
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.createdAt > :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: '2018-01-01 10:00:00.000' });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.createdAt > :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: '2018-01-01 10:00:00.000' });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('between', () => {
|
|
it('between', () => {
|
|
@@ -234,9 +320,16 @@ describe('parseFilterParams()', () => {
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.createdAt BETWEEN :arg1_a AND :arg1_b');
|
|
|
|
|
- expect(result[0].parameters).toEqual({
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe(
|
|
|
|
|
+ 'product.createdAt BETWEEN :arg1_a AND :arg1_b',
|
|
|
|
|
+ );
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({
|
|
|
arg1_a: '2018-01-01 10:00:00.000',
|
|
arg1_a: '2018-01-01 10:00:00.000',
|
|
|
arg1_b: '2018-02-01 10:00:00.000',
|
|
arg1_b: '2018-02-01 10:00:00.000',
|
|
|
});
|
|
});
|
|
@@ -252,9 +345,14 @@ describe('parseFilterParams()', () => {
|
|
|
eq: true,
|
|
eq: true,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].clause).toBe('product.available = :arg1');
|
|
|
|
|
- expect(result[0].parameters).toEqual({ arg1: true });
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereCondition(first) && first.clause).toBe('product.available = :arg1');
|
|
|
|
|
+ expect(isWhereCondition(first) && first.parameters).toEqual({ arg1: true });
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -275,9 +373,14 @@ describe('parseFilterParams()', () => {
|
|
|
},
|
|
},
|
|
|
],
|
|
],
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].operator).toBe(LogicalOperator.AND);
|
|
|
|
|
- expect(result[0].conditions).toEqual([
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereGroup(first) && first.operator).toBe(LogicalOperator.AND);
|
|
|
|
|
+ expect(isWhereGroup(first) && first.conditions).toEqual([
|
|
|
{ clause: 'product.name = :arg1', parameters: { arg1: 'foo' } },
|
|
{ clause: 'product.name = :arg1', parameters: { arg1: 'foo' } },
|
|
|
{ clause: 'product.slug = :arg2', parameters: { arg2: 'bar' } },
|
|
{ clause: 'product.slug = :arg2', parameters: { arg2: 'bar' } },
|
|
|
]);
|
|
]);
|
|
@@ -299,9 +402,14 @@ describe('parseFilterParams()', () => {
|
|
|
},
|
|
},
|
|
|
],
|
|
],
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
- expect(result[0].operator).toBe(LogicalOperator.OR);
|
|
|
|
|
- expect(result[0].conditions).toEqual([
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
|
|
+ const first = result[0];
|
|
|
|
|
+ expect(isWhereGroup(first) && first.operator).toBe(LogicalOperator.OR);
|
|
|
|
|
+ expect(isWhereGroup(first) && first.conditions).toEqual([
|
|
|
{ clause: 'product.name = :arg1', parameters: { arg1: 'foo' } },
|
|
{ clause: 'product.name = :arg1', parameters: { arg1: 'foo' } },
|
|
|
{ clause: 'product.slug = :arg2', parameters: { arg2: 'bar' } },
|
|
{ clause: 'product.slug = :arg2', parameters: { arg2: 'bar' } },
|
|
|
]);
|
|
]);
|
|
@@ -323,7 +431,11 @@ describe('parseFilterParams()', () => {
|
|
|
},
|
|
},
|
|
|
],
|
|
],
|
|
|
};
|
|
};
|
|
|
- const result = parseFilterParams(connection as any, Product, filterParams);
|
|
|
|
|
|
|
+ const result = parseFilterParams({
|
|
|
|
|
+ connection: connection as any,
|
|
|
|
|
+ entity: Product,
|
|
|
|
|
+ filterParams,
|
|
|
|
|
+ });
|
|
|
expect(result).toEqual([
|
|
expect(result).toEqual([
|
|
|
{
|
|
{
|
|
|
operator: LogicalOperator.AND,
|
|
operator: LogicalOperator.AND,
|