UNPKG

@future-widget-lab/ui-filters

Version:

A set of primitives for handling filters through search parameters in React applications.

130 lines (100 loc) 3.18 kB
import type { Filters } from '../../types/filters.type'; import type { RemoveFilterValueOptions } from './remove-filter-value.helper'; import { removeFilterValue } from './remove-filter-value.helper'; describe('Unit | Helper | removeFilterValue', () => { it('should exist', () => { expect(removeFilterValue).toBeDefined(); }); it('should remove a string filter value from an existing filter', () => { const input: RemoveFilterValueOptions = { filters: { color: ['red', 'blue', 'green'], size: [10, 20], isActive: [true] }, name: 'color', value: 'green' }; const actual = removeFilterValue(input); const expected: Filters = { color: ['red', 'blue'], size: [10, 20], isActive: [true] }; expect(actual).toEqual(expected); }); it('should remove a number filter value from an existing filter', () => { const input: RemoveFilterValueOptions = { filters: { color: ['red', 'blue'], size: [10, 20, 30], isActive: [true] }, name: 'size', value: 30 }; const actual = removeFilterValue(input); const expected: Filters = { color: ['red', 'blue'], size: [10, 20], isActive: [true] }; expect(actual).toEqual(expected); }); it('should remove a boolean filter value from an existing filter', () => { const input: RemoveFilterValueOptions = { filters: { color: ['red', 'blue'], size: [10, 20], isActive: [true, false] }, name: 'isActive', value: false }; const actual = removeFilterValue(input); const expected: Filters = { color: ['red', 'blue'], size: [10, 20], isActive: [true] }; expect(actual).toEqual(expected); }); it('should remove an object filter value from an existing filter', () => { const input: RemoveFilterValueOptions = { filters: { color: ['red', 'blue'], size: [10, 20], details: [{ key: 'value' }] }, name: 'details', value: { key: 'value' } }; const actual = removeFilterValue(input); const expected: Filters = { color: ['red', 'blue'], size: [10, 20] }; expect(actual).toEqual(expected); }); it('should handle removing a filter that does not exist', () => { const input: RemoveFilterValueOptions = { filters: { color: ['red', 'blue'], size: [10, 20], isActive: [true] }, name: 'brand', value: 'Nike' }; const actual = removeFilterValue(input); const expected: Filters = { color: ['red', 'blue'], size: [10, 20], isActive: [true] }; expect(actual).toEqual(expected); }); it('should handle empty filters', () => { const input: RemoveFilterValueOptions = { filters: {}, name: 'category', value: 'Electronics' }; const actual = removeFilterValue(input); const expected: Filters = {}; expect(actual).toEqual(expected); }); it('should remove a string filter value from an existing filter and remove the entire filter if it has only one value', () => { const input: RemoveFilterValueOptions = { filters: { color: ['green'], size: [10, 20], isActive: [true] }, name: 'color', value: 'green' }; const actual = removeFilterValue(input); const expected: Filters = { size: [10, 20], isActive: [true] }; expect(actual).toEqual(expected); }); });