1
1
import React from 'react' ;
2
- import { render , fireEvent } from '@testing-library/react' ;
2
+ import { render , fireEvent , waitFor } from '@testing-library/react' ;
3
3
import { noop } from 'lodash' ;
4
4
5
+ import { nativeChangeFieldValue } from '@folio/stripes/components' ;
6
+
5
7
import AcqDateRangeFilter from './AcqDateRangeFilter' ;
6
8
9
+ jest . mock ( '@folio/stripes/components' , ( ) => ( {
10
+ ...jest . requireActual ( '@folio/stripes-components' ) ,
11
+ nativeChangeFieldValue : jest . fn ( ) ,
12
+ } ) ) ;
13
+
7
14
const FILTER_LABEL = 'some date filter' ;
8
15
const FILTER_NAME = 'some-date-filter' ;
9
16
17
+ const mockSubscribeOnReset = jest . fn ( ) ;
18
+
10
19
const renderFilter = ( closedByDefault , onChange = noop , dateFormat ) => ( render (
11
20
< AcqDateRangeFilter
12
21
id = "some-date-filter"
@@ -15,6 +24,7 @@ const renderFilter = (closedByDefault, onChange = noop, dateFormat) => (render(
15
24
closedByDefault = { closedByDefault }
16
25
onChange = { onChange }
17
26
dateFormat = { dateFormat }
27
+ subscribeOnReset = { mockSubscribeOnReset }
18
28
/> ,
19
29
) ) ;
20
30
@@ -32,6 +42,12 @@ describe('AcqDateRangeFilter component', () => {
32
42
expect ( button . getAttribute ( 'aria-expanded' ) || 'false' ) . toBe ( 'false' ) ;
33
43
} ) ;
34
44
45
+ it ( 'should subscribe to reset events' , ( ) => {
46
+ renderFilter ( ) ;
47
+
48
+ expect ( mockSubscribeOnReset ) . toHaveBeenCalled ( ) ;
49
+ } ) ;
50
+
35
51
it ( 'should be opened by default when closedByDefault=false prop is passed' , ( ) => {
36
52
const { container } = renderFilter ( false ) ;
37
53
const button = container . querySelector ( '[id="accordion-toggle-button-some-date-filter"]' ) ;
@@ -78,4 +94,26 @@ describe('AcqDateRangeFilter component', () => {
78
94
79
95
expect ( onChangeFilter ) . toHaveBeenCalled ( ) ;
80
96
} ) ;
97
+
98
+ describe ( 'when reset handler is called' , ( ) => {
99
+ it ( 'should clear dates' , async ( ) => {
100
+ const callResetHandler = mockSubscribeOnReset . mockImplementation ( cb => {
101
+ cb ?. ( ) ;
102
+ } ) ;
103
+
104
+ const { getByLabelText } = renderFilter ( false , ( ) => { } , 'YYYY-DD-MM' ) ;
105
+ const fromDate = getByLabelText ( 'stripes-smart-components.dateRange.from' ) ;
106
+ const toDate = getByLabelText ( 'stripes-smart-components.dateRange.to' ) ;
107
+
108
+ fireEvent . change ( fromDate , { target : { value : '2000-01-01' } } ) ;
109
+ fireEvent . change ( toDate , { target : { value : '2020-01-01' } } ) ;
110
+
111
+ expect ( fromDate ) . toHaveValue ( '2000-01-01' ) ;
112
+ expect ( toDate ) . toHaveValue ( '2020-01-01' ) ;
113
+
114
+ callResetHandler ( ) ;
115
+
116
+ await waitFor ( ( ) => expect ( nativeChangeFieldValue ) . toHaveBeenCalledTimes ( 2 ) ) ;
117
+ } ) ;
118
+ } ) ;
81
119
} ) ;
0 commit comments