17
17
* under the License.
18
18
*/
19
19
import React from 'react' ;
20
+ import thunk from 'redux-thunk' ;
21
+ import { Provider } from 'react-redux' ;
22
+ import configureStore from 'redux-mock-store' ;
20
23
import { render , screen } from 'spec/helpers/testing-library' ;
21
24
import userEvent from '@testing-library/user-event' ;
22
25
import { CustomFrame } from '.' ;
@@ -29,8 +32,17 @@ const specificValue = '2021-03-16T00:00:00 : 2021-03-17T00:00:00';
29
32
const relativeNowValue = `DATEADD(DATETIME("now"), -7, day) : DATEADD(DATETIME("now"), 7, day)` ;
30
33
const relativeTodayValue = `DATEADD(DATETIME("today"), -7, day) : DATEADD(DATETIME("today"), 7, day)` ;
31
34
35
+ const mockStore = configureStore ( [ thunk ] ) ;
36
+ const store = mockStore ( {
37
+ common : { locale : 'en' } ,
38
+ } ) ;
39
+
32
40
test ( 'renders with default props' , ( ) => {
33
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { emptyValue } /> ) ;
41
+ render (
42
+ < Provider store = { store } >
43
+ < CustomFrame onChange = { jest . fn ( ) } value = { emptyValue } />
44
+ </ Provider > ,
45
+ ) ;
34
46
expect ( screen . getByText ( 'Configure custom time range' ) ) . toBeInTheDocument ( ) ;
35
47
expect ( screen . getByText ( 'Relative Date/Time' ) ) . toBeInTheDocument ( ) ;
36
48
expect ( screen . getByRole ( 'spinbutton' ) ) . toBeInTheDocument ( ) ;
@@ -40,39 +52,63 @@ test('renders with default props', () => {
40
52
} ) ;
41
53
42
54
test ( 'renders since and until with specific date/time' , ( ) => {
43
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { specificValue } /> ) ;
55
+ render (
56
+ < Provider store = { store } >
57
+ < CustomFrame onChange = { jest . fn ( ) } value = { specificValue } />
58
+ </ Provider > ,
59
+ ) ;
44
60
expect ( screen . getAllByText ( 'Specific Date/Time' ) . length ) . toBe ( 2 ) ;
45
61
expect ( screen . getAllByRole ( 'img' , { name : 'calendar' } ) . length ) . toBe ( 2 ) ;
46
62
} ) ;
47
63
48
64
test ( 'renders since and until with relative date/time' , ( ) => {
49
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { relativeNowValue } /> ) ;
65
+ render (
66
+ < Provider store = { store } >
67
+ < CustomFrame onChange = { jest . fn ( ) } value = { relativeNowValue } />
68
+ </ Provider > ,
69
+ ) ;
50
70
expect ( screen . getAllByText ( 'Relative Date/Time' ) . length ) . toBe ( 2 ) ;
51
71
expect ( screen . getAllByRole ( 'spinbutton' ) . length ) . toBe ( 2 ) ;
52
72
expect ( screen . getByText ( 'Days Before' ) ) . toBeInTheDocument ( ) ;
53
73
expect ( screen . getByText ( 'Days After' ) ) . toBeInTheDocument ( ) ;
54
74
} ) ;
55
75
56
76
test ( 'renders since and until with Now option' , ( ) => {
57
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { nowValue } /> ) ;
77
+ render (
78
+ < Provider store = { store } >
79
+ < CustomFrame onChange = { jest . fn ( ) } value = { nowValue } />
80
+ </ Provider > ,
81
+ ) ;
58
82
expect ( screen . getAllByText ( 'Now' ) . length ) . toBe ( 2 ) ;
59
83
} ) ;
60
84
61
85
test ( 'renders since and until with Midnight option' , ( ) => {
62
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { todayValue } /> ) ;
86
+ render (
87
+ < Provider store = { store } >
88
+ < CustomFrame onChange = { jest . fn ( ) } value = { todayValue } />
89
+ </ Provider > ,
90
+ ) ;
63
91
expect ( screen . getAllByText ( 'Midnight' ) . length ) . toBe ( 2 ) ;
64
92
} ) ;
65
93
66
94
test ( 'renders anchor with now option' , ( ) => {
67
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { relativeNowValue } /> ) ;
95
+ render (
96
+ < Provider store = { store } >
97
+ < CustomFrame onChange = { jest . fn ( ) } value = { relativeNowValue } />
98
+ </ Provider > ,
99
+ ) ;
68
100
expect ( screen . getByText ( 'Anchor to' ) ) . toBeInTheDocument ( ) ;
69
101
expect ( screen . getByRole ( 'radio' , { name : 'NOW' } ) ) . toBeInTheDocument ( ) ;
70
102
expect ( screen . getByRole ( 'radio' , { name : 'Date/Time' } ) ) . toBeInTheDocument ( ) ;
71
103
expect ( screen . queryByPlaceholderText ( 'Select date' ) ) . not . toBeInTheDocument ( ) ;
72
104
} ) ;
73
105
74
106
test ( 'renders anchor with date/time option' , ( ) => {
75
- render ( < CustomFrame onChange = { jest . fn ( ) } value = { relativeTodayValue } /> ) ;
107
+ render (
108
+ < Provider store = { store } >
109
+ < CustomFrame onChange = { jest . fn ( ) } value = { relativeTodayValue } />
110
+ </ Provider > ,
111
+ ) ;
76
112
expect ( screen . getByText ( 'Anchor to' ) ) . toBeInTheDocument ( ) ;
77
113
expect ( screen . getByRole ( 'radio' , { name : 'NOW' } ) ) . toBeInTheDocument ( ) ;
78
114
expect ( screen . getByRole ( 'radio' , { name : 'Date/Time' } ) ) . toBeInTheDocument ( ) ;
@@ -81,21 +117,33 @@ test('renders anchor with date/time option', () => {
81
117
82
118
test ( 'triggers onChange when the anchor changes' , ( ) => {
83
119
const onChange = jest . fn ( ) ;
84
- render ( < CustomFrame onChange = { onChange } value = { relativeNowValue } /> ) ;
120
+ render (
121
+ < Provider store = { store } >
122
+ < CustomFrame onChange = { onChange } value = { relativeNowValue } />
123
+ </ Provider > ,
124
+ ) ;
85
125
userEvent . click ( screen . getByRole ( 'radio' , { name : 'Date/Time' } ) ) ;
86
126
expect ( onChange ) . toHaveBeenCalled ( ) ;
87
127
} ) ;
88
128
89
129
test ( 'triggers onChange when the value changes' , ( ) => {
90
130
const onChange = jest . fn ( ) ;
91
- render ( < CustomFrame onChange = { onChange } value = { emptyValue } /> ) ;
131
+ render (
132
+ < Provider store = { store } >
133
+ < CustomFrame onChange = { onChange } value = { emptyValue } />
134
+ </ Provider > ,
135
+ ) ;
92
136
userEvent . click ( screen . getByRole ( 'img' , { name : 'up' } ) ) ;
93
137
expect ( onChange ) . toHaveBeenCalled ( ) ;
94
138
} ) ;
95
139
96
140
test ( 'triggers onChange when the mode changes' , ( ) => {
97
141
const onChange = jest . fn ( ) ;
98
- render ( < CustomFrame onChange = { onChange } value = { todayNowValue } /> ) ;
142
+ render (
143
+ < Provider store = { store } >
144
+ < CustomFrame onChange = { onChange } value = { todayNowValue } />
145
+ </ Provider > ,
146
+ ) ;
99
147
userEvent . click ( screen . getByTitle ( 'Midnight' ) ) ;
100
148
userEvent . click ( screen . getByTitle ( 'Relative Date/Time' ) ) ;
101
149
userEvent . click ( screen . getAllByTitle ( 'Now' ) [ 1 ] ) ;
@@ -105,7 +153,11 @@ test('triggers onChange when the mode changes', () => {
105
153
106
154
test ( 'triggers onChange when the grain changes' , async ( ) => {
107
155
const onChange = jest . fn ( ) ;
108
- render ( < CustomFrame onChange = { onChange } value = { relativeNowValue } /> ) ;
156
+ render (
157
+ < Provider store = { store } >
158
+ < CustomFrame onChange = { onChange } value = { relativeNowValue } />
159
+ </ Provider > ,
160
+ ) ;
109
161
userEvent . click ( screen . getByText ( 'Days Before' ) ) ;
110
162
userEvent . click ( screen . getByText ( 'Weeks Before' ) ) ;
111
163
userEvent . click ( screen . getByText ( 'Days After' ) ) ;
@@ -115,11 +167,36 @@ test('triggers onChange when the grain changes', async () => {
115
167
116
168
test ( 'triggers onChange when the date changes' , async ( ) => {
117
169
const onChange = jest . fn ( ) ;
118
- render ( < CustomFrame onChange = { onChange } value = { specificValue } /> ) ;
170
+ render (
171
+ < Provider store = { store } >
172
+ < CustomFrame onChange = { onChange } value = { specificValue } />
173
+ </ Provider > ,
174
+ ) ;
119
175
const inputs = screen . getAllByPlaceholderText ( 'Select date' ) ;
120
176
userEvent . click ( inputs [ 0 ] ) ;
121
177
userEvent . click ( screen . getAllByText ( 'Now' ) [ 0 ] ) ;
122
178
userEvent . click ( inputs [ 1 ] ) ;
123
179
userEvent . click ( screen . getAllByText ( 'Now' ) [ 1 ] ) ;
124
180
expect ( onChange ) . toHaveBeenCalledTimes ( 2 ) ;
125
181
} ) ;
182
+
183
+ test ( 'should translate Date Picker' , ( ) => {
184
+ const onChange = jest . fn ( ) ;
185
+ const store = mockStore ( {
186
+ common : { locale : 'fr' } ,
187
+ } ) ;
188
+ render (
189
+ < Provider store = { store } >
190
+ < CustomFrame onChange = { onChange } value = { specificValue } />
191
+ </ Provider > ,
192
+ ) ;
193
+ userEvent . click ( screen . getAllByRole ( 'img' , { name : 'calendar' } ) [ 0 ] ) ;
194
+ expect ( screen . getByText ( '2021' ) ) . toBeInTheDocument ( ) ;
195
+ expect ( screen . getByText ( 'lu' ) ) . toBeInTheDocument ( ) ;
196
+ expect ( screen . getByText ( 'ma' ) ) . toBeInTheDocument ( ) ;
197
+ expect ( screen . getByText ( 'me' ) ) . toBeInTheDocument ( ) ;
198
+ expect ( screen . getByText ( 'je' ) ) . toBeInTheDocument ( ) ;
199
+ expect ( screen . getByText ( 've' ) ) . toBeInTheDocument ( ) ;
200
+ expect ( screen . getByText ( 'sa' ) ) . toBeInTheDocument ( ) ;
201
+ expect ( screen . getByText ( 'di' ) ) . toBeInTheDocument ( ) ;
202
+ } ) ;
0 commit comments