WIP
This commit is contained in:
parent
875989e3a9
commit
5b1b1cdaaa
31
graphql/filter.ts
Normal file
31
graphql/filter.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
type BaseFilter = {
|
||||||
|
createVars: () => { [key: string]: any };
|
||||||
|
};
|
||||||
|
|
||||||
|
function createBaseFilter(key: string, content: any): BaseFilter {
|
||||||
|
return {
|
||||||
|
createVars: () => ({ [key]: content }),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createAndFilter(filters: Array<BaseFilter>): BaseFilter {
|
||||||
|
const filterVars = filters.map((filter) => filter.createVars());
|
||||||
|
return createBaseFilter("andFilters", { filters: filterVars });
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createCategoryFilter(
|
||||||
|
feature: string,
|
||||||
|
value: string,
|
||||||
|
): BaseFilter {
|
||||||
|
const content = { [feature]: { value } };
|
||||||
|
return createBaseFilter(feature, content);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createRangeFilter(
|
||||||
|
feature: string,
|
||||||
|
greaterThanEqualTo: number,
|
||||||
|
lessThan: number,
|
||||||
|
): BaseFilter {
|
||||||
|
const content = { greaterThanEqualTo, lessThan };
|
||||||
|
return createBaseFilter(feature, content);
|
||||||
|
}
|
28
test/graphql/filter.test.ts
Normal file
28
test/graphql/filter.test.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { createAndFilter, createRangeFilter } from "../../graphql/filter";
|
||||||
|
|
||||||
|
describe("create filterInput", () => {
|
||||||
|
it("should create a filter input with the correct structure", () => {
|
||||||
|
const feature = "cueObjectAngle";
|
||||||
|
const greaterThanEqualTo = 10;
|
||||||
|
const lessThan = 20;
|
||||||
|
|
||||||
|
const rangeFilter = createRangeFilter(
|
||||||
|
feature,
|
||||||
|
greaterThanEqualTo,
|
||||||
|
lessThan,
|
||||||
|
);
|
||||||
|
const andFilterInput = createAndFilter([rangeFilter]);
|
||||||
|
expect(andFilterInput.createVars()).toEqual({
|
||||||
|
andFilters: {
|
||||||
|
filters: [
|
||||||
|
{
|
||||||
|
[feature]: {
|
||||||
|
greaterThanEqualTo,
|
||||||
|
lessThan,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user