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