UNPKG

@apptus/esales-api

Version:

Library for making requests to Elevate 4 API v3

57 lines (49 loc) 2.41 kB
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 } ]); });