diff --git a/lib/AcqDateRangeFilter/AcqDateRangeFilter.test.js b/lib/AcqDateRangeFilter/AcqDateRangeFilter.test.js index 591923e4..39a3b3a2 100644 --- a/lib/AcqDateRangeFilter/AcqDateRangeFilter.test.js +++ b/lib/AcqDateRangeFilter/AcqDateRangeFilter.test.js @@ -1,12 +1,21 @@ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; +import { render, fireEvent, waitFor } from '@testing-library/react'; import { noop } from 'lodash'; +import { nativeChangeFieldValue } from '@folio/stripes/components'; + import AcqDateRangeFilter from './AcqDateRangeFilter'; +jest.mock('@folio/stripes/components', () => ({ + ...jest.requireActual('@folio/stripes-components'), + nativeChangeFieldValue: jest.fn(), +})); + const FILTER_LABEL = 'some date filter'; const FILTER_NAME = 'some-date-filter'; +const mockSubscribeOnReset = jest.fn(); + const renderFilter = (closedByDefault, onChange = noop, dateFormat) => (render( (render( closedByDefault={closedByDefault} onChange={onChange} dateFormat={dateFormat} + subscribeOnReset={mockSubscribeOnReset} />, )); @@ -32,6 +42,12 @@ describe('AcqDateRangeFilter component', () => { expect(button.getAttribute('aria-expanded') || 'false').toBe('false'); }); + it('should subscribe to reset events', () => { + renderFilter(); + + expect(mockSubscribeOnReset).toHaveBeenCalled(); + }); + it('should be opened by default when closedByDefault=false prop is passed', () => { const { container } = renderFilter(false); const button = container.querySelector('[id="accordion-toggle-button-some-date-filter"]'); @@ -78,4 +94,26 @@ describe('AcqDateRangeFilter component', () => { expect(onChangeFilter).toHaveBeenCalled(); }); + + describe('when reset handler is called', () => { + it('should clear dates', async () => { + const callResetHandler = mockSubscribeOnReset.mockImplementation(cb => { + cb?.(); + }); + + const { getByLabelText } = renderFilter(false, () => {}, 'YYYY-DD-MM'); + const fromDate = getByLabelText('stripes-smart-components.dateRange.from'); + const toDate = getByLabelText('stripes-smart-components.dateRange.to'); + + fireEvent.change(fromDate, { target: { value: '2000-01-01' } }); + fireEvent.change(toDate, { target: { value: '2020-01-01' } }); + + expect(fromDate).toHaveValue('2000-01-01'); + expect(toDate).toHaveValue('2020-01-01'); + + callResetHandler(); + + await waitFor(() => expect(nativeChangeFieldValue).toHaveBeenCalledTimes(2)); + }); + }); });