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 possibleFilters', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.selectedFilters = ['abc', '123']; multiFilterComponent.onFiltersChanges.emit = jest.fn(); multiFilterComponent.emitFiltersChanged(); expect(multiFilterComponent.onFiltersChanges.emit) .toHaveBeenCalledWith( multiFilterComponent.selectedFilters, ); }); }); describe('toggleFilters', () => { // tslint:disable-next-line test('It sets isFilterSelectionVisible to true if isFilterSelectionVisible is false', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.isFilterSelectionVisible = true; multiFilterComponent.toggleFilters(); expect(multiFilterComponent.isFilterSelectionVisible) .toBe(false); }); // tslint:disable-next-line test('It sets isFilterSelectionVisible to false if isFilterSelectionVisible is true', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.isFilterSelectionVisible = false; multiFilterComponent.toggleFilters(); expect(multiFilterComponent.isFilterSelectionVisible) .toBe(true); }); }); 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.selectFilter('test'); expect(multiFilterComponent.emitFiltersChanged) .toHaveBeenCalled(); }); // 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.selectFilter('test'); expect(multiFilterComponent.emitFiltersChanged) .not.toHaveBeenCalled(); }); // tslint:disable-next-line test('If the filter is not in the selectedFilters it adds it to the selectedFilters', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.emitFiltersChanged = jest.fn(); multiFilterComponent.selectedFilters = []; multiFilterComponent.selectFilter('test'); expect(multiFilterComponent.selectedFilters[0]) .toBe('test'); }); }); describe('deselectFilter', () => { // tslint:disable-next-line test('It removes the deselectedFilters from the selectedFilters', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.emitFiltersChanged = jest.fn(); multiFilterComponent.selectedFilters = ['test']; multiFilterComponent.deselectFilter('test'); expect( multiFilterComponent.selectedFilters, ).toEqual([]); }); // tslint:disable-next-line test('It calls emitFiltersChanged', () => { const multiFilterComponent = initMultiFilterComponent(); multiFilterComponent.emitFiltersChanged = jest.fn(); multiFilterComponent.deselectFilter('test'); expect(multiFilterComponent.emitFiltersChanged) .toHaveBeenCalled(); }); });