@apptus/esales-api
Version:
Library for making requests to Elevate 4 API v3
57 lines (49 loc) • 2.41 kB
text/typescript
import { describe, it, expect } from '#test';
import { isTextFacet, isColorFacet, isSizeFacet, isRangeFacet, isCheckboxFacet } from './type.ts';
import type { Facet } from '../models/mod.ts';
let facets: Facet[];
const suite = describe({
name: 'types',
beforeEach() {
facets = [
{ id: 'brand', label: 'Brand', type: 'TEXT', sort: 'RELEVANCE', selectedCount: 1, values: [] },
{ id: 'color', label: 'Color', type: 'COLOR', selectedCount: 2, values: [] },
{ id: 'outOfStock', label: 'Out of stock', type: 'CHECKBOX', selected: true, count: 42 },
{ id: 'size', label: 'Sizes', type: 'SIZE', selectedCount: 3, sizeTypes: [] },
{ id: 'style', label: 'Style', type: 'TEXT', sort: 'RELEVANCE', selectedCount: 4, values: [] },
{ id: 'color2', label: 'Color2', type: 'COLOR', selectedCount: 5, values: [] },
{ id: 'price', label: 'Price', type: 'RANGE', min: 20, max: 50 },
{ id: 'custom.sale', label: 'On sale', type: 'CHECKBOX', selected: false },
{ id: 'custom.width', label: 'Width', type: 'RANGE', min: 200, max: 220 }
];
}
});
it(suite, 'should filter only TEXT types', () => {
expect(facets.filter(isTextFacet)).toEqual([
{ id: 'brand', label: 'Brand', type: 'TEXT', sort: 'RELEVANCE', selectedCount: 1, values: [] },
{ id: 'style', label: 'Style', type: 'TEXT', sort: 'RELEVANCE', selectedCount: 4, values: [] }
]);
});
it(suite, 'should filter only COLOR types', () => {
expect(facets.filter(isColorFacet)).toEqual([
{ id: 'color', label: 'Color', type: 'COLOR', selectedCount: 2, values: [] },
{ id: 'color2', label: 'Color2', type: 'COLOR', selectedCount: 5, values: [] }
]);
});
it(suite, 'should filter only SIZE types', () => {
expect(facets.filter(isSizeFacet)).toEqual([
{ id: 'size', label: 'Sizes', type: 'SIZE', selectedCount: 3, sizeTypes: [] }
]);
});
it(suite, 'should filter only RANGE types', () => {
expect(facets.filter(isRangeFacet)).toEqual([
{ id: 'price', label: 'Price', type: 'RANGE', min: 20, max: 50 },
{ id: 'custom.width', label: 'Width', type: 'RANGE', min: 200, max: 220 }
]);
});
it(suite, 'should filter only RANGE types', () => {
expect(facets.filter(isCheckboxFacet)).toEqual([
{ id: 'outOfStock', label: 'Out of stock', type: 'CHECKBOX', selected: true, count: 42 },
{ id: 'custom.sale', label: 'On sale', type: 'CHECKBOX', selected: false }
]);
});