@@ -12,6 +12,8 @@ const filters: MessageFilters[] = [
1212 { name : 'name2' , code : 'code2' } ,
1313] ;
1414
15+ const editFilterMock = jest . fn ( ) ;
16+
1517const setupComponent = ( props : Partial < FilterModalProps > = { } ) =>
1618 render (
1719 < AddFilter
@@ -20,7 +22,7 @@ const setupComponent = (props: Partial<FilterModalProps> = {}) =>
2022 deleteFilter = { jest . fn ( ) }
2123 activeFilterHandler = { jest . fn ( ) }
2224 toggleEditModal = { jest . fn ( ) }
23- editFilter = { jest . fn ( ) }
25+ editFilter = { editFilterMock }
2426 filters = { props . filters || filters }
2527 { ...props }
2628 />
@@ -83,6 +85,26 @@ describe('AddFilter component', () => {
8385 expect ( addFilterBtn ) . toBeEnabled ( ) ;
8486 expect ( codeTextBox ) . toHaveValue ( code ) ;
8587 } ) ;
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+ } ) ;
86108 } ) ;
87109
88110 describe ( 'onSubmit with Filter being saved' , ( ) => {
@@ -91,6 +113,7 @@ describe('AddFilter component', () => {
91113 const toggleModelMock = jest . fn ( ) ;
92114
93115 const codeValue = 'filter code' ;
116+ const longCodeValue = 'a long filter code' ;
94117 const nameValue = 'filter name' ;
95118
96119 beforeEach ( async ( ) => {
@@ -149,7 +172,7 @@ describe('AddFilter component', () => {
149172 expect ( activeFilterHandlerMock ) . toHaveBeenCalledTimes ( 1 ) ;
150173 expect ( activeFilterHandlerMock ) . toHaveBeenCalledWith (
151174 {
152- name : 'Unsaved filter' ,
175+ name : codeValue ,
153176 code : codeValue ,
154177 saveFilter : false ,
155178 } ,
@@ -184,5 +207,36 @@ describe('AddFilter component', () => {
184207 } ) ;
185208 } ) ;
186209 } ) ;
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+ } ) ;
187241 } ) ;
188242} ) ;
0 commit comments