@@ -12,6 +12,8 @@ const filters: MessageFilters[] = [
12
12
{ name : 'name2' , code : 'code2' } ,
13
13
] ;
14
14
15
+ const editFilterMock = jest . fn ( ) ;
16
+
15
17
const setupComponent = ( props : Partial < FilterModalProps > = { } ) =>
16
18
render (
17
19
< AddFilter
@@ -20,7 +22,7 @@ const setupComponent = (props: Partial<FilterModalProps> = {}) =>
20
22
deleteFilter = { jest . fn ( ) }
21
23
activeFilterHandler = { jest . fn ( ) }
22
24
toggleEditModal = { jest . fn ( ) }
23
- editFilter = { jest . fn ( ) }
25
+ editFilter = { editFilterMock }
24
26
filters = { props . filters || filters }
25
27
{ ...props }
26
28
/>
@@ -83,6 +85,26 @@ describe('AddFilter component', () => {
83
85
expect ( addFilterBtn ) . toBeEnabled ( ) ;
84
86
expect ( codeTextBox ) . toHaveValue ( code ) ;
85
87
} ) ;
88
+
89
+ it ( 'calls editFilter when edit button is clicked in saved filters' , ( ) => {
90
+ const savedFiltersButton = screen . getByText ( 'Saved Filters' ) ;
91
+ expect ( savedFiltersButton ) . toBeInTheDocument ( ) ;
92
+
93
+ userEvent . click ( savedFiltersButton ) ;
94
+
95
+ const index = 0 ;
96
+
97
+ const editButton = screen . getAllByText ( 'Edit' ) [ index ] ;
98
+ userEvent . click ( editButton ) ;
99
+
100
+ const { code, name } = filters [ index ] ;
101
+
102
+ expect ( editFilterMock ) . toHaveBeenCalledTimes ( 1 ) ;
103
+ expect ( editFilterMock ) . toHaveBeenCalledWith ( {
104
+ index,
105
+ filter : { code, name } ,
106
+ } ) ;
107
+ } ) ;
86
108
} ) ;
87
109
88
110
describe ( 'onSubmit with Filter being saved' , ( ) => {
@@ -91,6 +113,7 @@ describe('AddFilter component', () => {
91
113
const toggleModelMock = jest . fn ( ) ;
92
114
93
115
const codeValue = 'filter code' ;
116
+ const longCodeValue = 'a long filter code' ;
94
117
const nameValue = 'filter name' ;
95
118
96
119
beforeEach ( async ( ) => {
@@ -149,7 +172,7 @@ describe('AddFilter component', () => {
149
172
expect ( activeFilterHandlerMock ) . toHaveBeenCalledTimes ( 1 ) ;
150
173
expect ( activeFilterHandlerMock ) . toHaveBeenCalledWith (
151
174
{
152
- name : 'Unsaved filter' ,
175
+ name : codeValue ,
153
176
code : codeValue ,
154
177
saveFilter : false ,
155
178
} ,
@@ -184,5 +207,36 @@ describe('AddFilter component', () => {
184
207
} ) ;
185
208
} ) ;
186
209
} ) ;
210
+
211
+ it ( 'should use sliced code as the filter name if filter name is empty' , async ( ) => {
212
+ const codeTextBox = screen . getAllByRole ( 'textbox' ) [ 0 ] ;
213
+ const nameTextBox = screen . getAllByRole ( 'textbox' ) [ 1 ] ;
214
+ const addFilterBtn = screen . getByRole ( 'button' , { name : / A d d f i l t e r / i } ) ;
215
+
216
+ userEvent . clear ( nameTextBox ) ;
217
+ userEvent . clear ( codeTextBox ) ;
218
+ userEvent . paste ( codeTextBox , longCodeValue ) ;
219
+
220
+ expect ( nameTextBox ) . toHaveValue ( '' ) ;
221
+ expect ( codeTextBox ) . toHaveValue ( longCodeValue ) ;
222
+
223
+ userEvent . click ( addFilterBtn ) ;
224
+
225
+ const filterName = `${ longCodeValue . slice ( 0 , 16 ) } ...` ;
226
+
227
+ await waitFor ( ( ) => {
228
+ expect ( activeFilterHandlerMock ) . toHaveBeenCalledTimes ( 1 ) ;
229
+ expect ( activeFilterHandlerMock ) . toHaveBeenCalledWith (
230
+ {
231
+ name : filterName ,
232
+ code : longCodeValue ,
233
+ saveFilter : false ,
234
+ } ,
235
+ - 1
236
+ ) ;
237
+ expect ( codeTextBox ) . toHaveValue ( '' ) ;
238
+ expect ( toggleModelMock ) . toHaveBeenCalled ( ) ;
239
+ } ) ;
240
+ } ) ;
187
241
} ) ;
188
242
} ) ;
0 commit comments