Skip to content

Commit

Permalink
Merge pull request #82 from Relewise/feat/add-object-value-is-subset-…
Browse files Browse the repository at this point in the history
…of-condition

Feat: Add ObjectValueIsSubsetOfCondition
  • Loading branch information
mzanoni authored Aug 22, 2024
2 parents 7be5488 + d5b4e32 commit ee2cef4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
17 changes: 15 additions & 2 deletions packages/client/src/builders/dataObjectFilterConditionBuilder.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { DoubleRange, DataValueBase, ObjectValueMinByCondition, ObjectValueMaxByCondition, ObjectValueContainsCondition, ObjectValueEqualsCondition, ObjectValueGreaterThanCondition, ObjectValueLessThanCondition, ObjectValueInRangeCondition, ObjectValueCondition } from '..';
import { DoubleRange, DataValueBase, ObjectValueMinByCondition, ObjectValueMaxByCondition, ObjectValueContainsCondition, ObjectValueEqualsCondition, ObjectValueGreaterThanCondition, ObjectValueLessThanCondition, ObjectValueInRangeCondition, ObjectValueCondition, ObjectValueIsSubsetOfCondition } from '..';

export type DataObjectFilterConditions =
export type DataObjectFilterConditions =
| ObjectValueContainsCondition
| ObjectValueEqualsCondition
| ObjectValueGreaterThanCondition
Expand Down Expand Up @@ -102,6 +102,19 @@ export class DataObjectFilterConditionBuilder {
return this;
}

public addObjectValueIsSubsetOfCondition<T>(key: string, value: DataValueBase<T>, objectPath?: string[], negated: boolean = false): this {
const condition: ObjectValueIsSubsetOfCondition = {
$type: 'Relewise.Client.Requests.Filters.DataObjects.Conditions.ObjectValueIsSubsetOfCondition, Relewise.Client',
value: value,
key: key,
objectPath: objectPath,
negated: negated,
};
this.conditions.push(condition);

return this;
}

public build(): DataObjectFilterConditions[] | null {
return this.conditions.length === 0
? null
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ProductSearchBuilder, ProductSearchRequest, Searcher, UserFactory } from '../../src';
import { DataValueFactory, ProductSearchBuilder, ProductSearchRequest, Searcher, UserFactory } from '../../src';
import { test, expect } from '@jest/globals'

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

const result = await searcher.searchProducts(request);

expect(result?.results?.length).toBe(3);
});

test('Object value is subset of condition filter', async() => {

const request: ProductSearchRequest = baseBuilder()
.filters(f => f.addProductDataFilter('objects', c => c.addDataObjectCondition(doc =>
doc.addObjectValueIsSubsetOfCondition('list', DataValueFactory.stringCollection(['123', '456', '789'])))))
.pagination(p => p.setPageSize(3))
.build();

const result = await searcher.searchProducts(request);

expect(result?.results?.length).toBe(3);
});

0 comments on commit ee2cef4

Please sign in to comment.