Skip to content

Commit ee2cef4

Browse files
authored
Merge pull request #82 from Relewise/feat/add-object-value-is-subset-of-condition
Feat: Add ObjectValueIsSubsetOfCondition
2 parents 7be5488 + d5b4e32 commit ee2cef4

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

packages/client/src/builders/dataObjectFilterConditionBuilder.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { DoubleRange, DataValueBase, ObjectValueMinByCondition, ObjectValueMaxByCondition, ObjectValueContainsCondition, ObjectValueEqualsCondition, ObjectValueGreaterThanCondition, ObjectValueLessThanCondition, ObjectValueInRangeCondition, ObjectValueCondition } from '..';
1+
import { DoubleRange, DataValueBase, ObjectValueMinByCondition, ObjectValueMaxByCondition, ObjectValueContainsCondition, ObjectValueEqualsCondition, ObjectValueGreaterThanCondition, ObjectValueLessThanCondition, ObjectValueInRangeCondition, ObjectValueCondition, ObjectValueIsSubsetOfCondition } from '..';
22

3-
export type DataObjectFilterConditions =
3+
export type DataObjectFilterConditions =
44
| ObjectValueContainsCondition
55
| ObjectValueEqualsCondition
66
| ObjectValueGreaterThanCondition
@@ -102,6 +102,19 @@ export class DataObjectFilterConditionBuilder {
102102
return this;
103103
}
104104

105+
public addObjectValueIsSubsetOfCondition<T>(key: string, value: DataValueBase<T>, objectPath?: string[], negated: boolean = false): this {
106+
const condition: ObjectValueIsSubsetOfCondition = {
107+
$type: 'Relewise.Client.Requests.Filters.DataObjects.Conditions.ObjectValueIsSubsetOfCondition, Relewise.Client',
108+
value: value,
109+
key: key,
110+
objectPath: objectPath,
111+
negated: negated,
112+
};
113+
this.conditions.push(condition);
114+
115+
return this;
116+
}
117+
105118
public build(): DataObjectFilterConditions[] | null {
106119
return this.conditions.length === 0
107120
? null

packages/client/tests/integration-tests/filters.integration.test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ProductSearchBuilder, ProductSearchRequest, Searcher, UserFactory } from '../../src';
1+
import { DataValueFactory, ProductSearchBuilder, ProductSearchRequest, Searcher, UserFactory } from '../../src';
22
import { test, expect } from '@jest/globals'
33

44
const { npm_config_API_KEY: API_KEY, npm_config_DATASET_ID: DATASET_ID, npm_config_SERVER_URL: SERVER_URL } = process.env;
@@ -52,5 +52,18 @@ test('Product Variant Object Path filter', async() => {
5252

5353
const result = await searcher.searchProducts(request);
5454

55+
expect(result?.results?.length).toBe(3);
56+
});
57+
58+
test('Object value is subset of condition filter', async() => {
59+
60+
const request: ProductSearchRequest = baseBuilder()
61+
.filters(f => f.addProductDataFilter('objects', c => c.addDataObjectCondition(doc =>
62+
doc.addObjectValueIsSubsetOfCondition('list', DataValueFactory.stringCollection(['123', '456', '789'])))))
63+
.pagination(p => p.setPageSize(3))
64+
.build();
65+
66+
const result = await searcher.searchProducts(request);
67+
5568
expect(result?.results?.length).toBe(3);
5669
});

0 commit comments

Comments
 (0)