import 'reflect-metadata'; import { MultiFilterComponent, } from './multi-filter.component'; const initMultiFilterComponent = () => { return new MultiFilterComponent(); }; describe('emitFiltersChanged', () => { // tslint:disable-next-line test('It calls onFiltersChanges.emit with the filters passed', () => { const multiFilterComponent = initMultiFilterComponent(); const newFilters = ['abc', '123']; multiFilterComponent.onFiltersChanges.emit = jest.fn(); multiFilterComponent.emitFiltersChanged(newFilters); expect(multiFilterComponent.onFiltersChanges.emit) .toHaveBeenCalledWith(newFilters); }); }); describe('showFilters', () => { // tslint:disable-next-line test('Outputs an event', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.onShowFilters.emit = jest.fn(); multiFilterComponent.showFilters(); expect(multiFilterComponent.onShowFilters.emit) .toHaveBeenCalled(); }); }); describe('selectFilter', () => { // tslint:disable-next-line test('If the filter is not in the selectedFilters it calls emitFiltersChanged', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.emitFiltersChanged = jest.fn(); multiFilterComponent.selectedFilters = []; multiFilterComponent.isSelected = jest.fn().mockReturnValueOnce(false); multiFilterComponent.selectFilter('test'); expect(multiFilterComponent.emitFiltersChanged) .toHaveBeenCalledWith(['test']); }); // tslint:disable-next-line test('If the filter is in the selectedFilters it does not call emitFiltersChanged', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.emitFiltersChanged = jest.fn(); multiFilterComponent.selectedFilters = ['test']; multiFilterComponent.isSelected = jest.fn().mockReturnValueOnce(true); multiFilterComponent.selectFilter('test'); expect(multiFilterComponent.emitFiltersChanged) .not.toHaveBeenCalled(); }); }); describe('deselectFilter', () => { // tslint:disable-next-line test('It calls emitFiltersChanged', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.possibleFilters = ['test']; multiFilterComponent.emitFiltersChanged = jest.fn(); multiFilterComponent.deselectFilter('test'); expect(multiFilterComponent.emitFiltersChanged) .toHaveBeenCalledWith([]); }); }); describe('isSelected', () => { test('Is true if filters in the selected filters', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.selectedFilters = ['1', '2', '3']; const result = multiFilterComponent.isSelected('2'); expect(result).toBe(true); }); test('Is false if filters is not in the selected filters', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.selectedFilters = ['1', '2', '3']; const result = multiFilterComponent.isSelected('4'); expect(result).toBe(false); }); });