Skip to content

Commit 65d8dc4

Browse files
authored
Merge pull request #87 from Relewise/feat/include-disabled-variants
Feat: Optionally include disabled variants in ProductHasVariantsFilter
2 parents 2e22cde + f68ea53 commit 65d8dc4

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

packages/client/src/builders/filterBuilder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ export class FilterBuilder {
183183
* @param options - Optional settings for the filter.
184184
* @returns The FilterBuilder instance for chaining.
185185
*/
186-
public addProductHasVariantsFilter(lowerBound?: number, upperBound?: number, negated: boolean = false, options?: FilterOptions): this {
186+
public addProductHasVariantsFilter(lowerBound?: number, upperBound?: number, negated: boolean = false, options?: FilterOptions & { includeDisabled?: boolean }): this {
187187
this.productFilterBuilder.addProductHasVariantsFilter(lowerBound, upperBound, negated, options);
188188
return this;
189189
}

packages/client/src/builders/filters/productFilterBuilder.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export class ProductFilterBuilder extends FilterBuilderBase<ProductFilterBuilder
153153
* @param options - Optional settings for the filter.
154154
* @returns The ProductFilterBuilder instance for chaining.
155155
*/
156-
public addProductHasVariantsFilter(lowerBound?: number, upperBound?: number, negated: boolean = false, options?: FilterOptions): this {
156+
public addProductHasVariantsFilter(lowerBound?: number, upperBound?: number, negated: boolean = false, options?: FilterOptions & { includeDisabled?: boolean }): this {
157157
const internalSettingsBuilder = new FilterSettingsBuilder();
158158
options?.filterSettings?.(internalSettingsBuilder);
159159

@@ -165,7 +165,9 @@ export class ProductFilterBuilder extends FilterBuilderBase<ProductFilterBuilder
165165
},
166166
negated: negated,
167167
settings: internalSettingsBuilder.build(),
168+
includeDisabled: options?.includeDisabled ?? false
168169
};
170+
169171
this.filters.push(filter);
170172

171173
return this;

packages/client/tests/unit-tests/builders/search/productSearchBuilder.unit.test.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { UserFactory } from '../../../../src/factory';
22
import { ProductSearchBuilder } from '../../../../src/builders/search';
33
import { test, expect } from '@jest/globals'
4-
import { ProductSearchRequest } from '../../../../src/models/data-contracts';
4+
import { ProductHasVariantsFilter, ProductSearchRequest } from '../../../../src/models/data-contracts';
55

66
function baseBuilder() {
77
return new ProductSearchBuilder({
@@ -132,4 +132,14 @@ test('searchHightlighting', () => {
132132
expect(subject.settings?.highlight?.limit.maxSnippetsPerEntry).toBe(2);
133133
expect(subject.settings?.highlight?.limit.maxSnippetsPerField).toBe(3);
134134
expect(subject.settings?.highlight?.shape.includeOffsets).toBe(true);
135+
});
136+
137+
test('includeDisabled in ProductHasVariantsFilter', () => {
138+
const subject: ProductSearchRequest = baseBuilder()
139+
.filters(f => f.addProductHasVariantsFilter(1, 9999, false, { includeDisabled: true }))
140+
.build();
141+
142+
const filterFromRequest = (subject.filters?.items?.[0] as ProductHasVariantsFilter) ?? null;
143+
expect(filterFromRequest).not.toBeNull();
144+
expect(filterFromRequest!.includeDisabled).toBe(true);
135145
});

0 commit comments

Comments
 (0)