@@ -282,7 +282,7 @@ describe('CreateConverterDialog', () => {
282282 expect ( mockedConvertersApi . createConverter ) . toHaveBeenCalledWith ( {
283283 name : 'caesar-custom' ,
284284 type : 'CaesarConverter' ,
285- params : { caesar_offset : '5' } ,
285+ params : { caesar_offset : 5 } ,
286286 } )
287287 expect ( onCreated ) . toHaveBeenCalledWith ( 'caesar-custom' )
288288 } )
@@ -332,11 +332,85 @@ describe('CreateConverterDialog', () => {
332332 expect ( mockedConvertersApi . createConverter ) . toHaveBeenCalledWith ( {
333333 name : 'SearchReplaceConverter' ,
334334 type : 'SearchReplaceConverter' ,
335- params : { pattern : 'hello' , replace : 'world' , regex_flags : '0' } ,
335+ params : { pattern : 'hello' , replace : 'world' , regex_flags : 0 } ,
336336 } )
337337 } ,
338338 )
339339
340+ it ( 'should submit the catalog font size as a number' , async ( ) => {
341+ const user = userEvent . setup ( )
342+ mockConverterParameters ( [
343+ { name : 'img_to_add' , type_name : 'Path' , is_list : false , choices : null , default : null , required : true } ,
344+ { name : 'font_name' , type_name : 'Path' , is_list : false , choices : null , default : null , required : false } ,
345+ { name : 'font_size' , type_name : 'int' , is_list : false , choices : null , default : '15' , required : false } ,
346+ { name : 'rotation' , type_name : 'float' , is_list : false , choices : null , default : '0.0' , required : false } ,
347+ { name : 'center_text' , type_name : 'bool' , is_list : false , choices : null , default : 'False' , required : false } ,
348+ ] , 'AddImageTextConverter' )
349+ renderDialog ( )
350+ await selectConverterType ( 'AddImageTextConverter' )
351+
352+ await user . type ( screen . getByRole ( 'textbox' , { name : 'img_to_add *' } ) , 'data:image/png;base64,iVBORw0K' )
353+ const fontSize = screen . getByRole ( 'textbox' , { name : 'font_size' } )
354+ expect ( fontSize ) . toHaveValue ( '15' )
355+ await user . clear ( fontSize )
356+ await user . type ( fontSize , 'large' )
357+ await user . click ( screen . getByRole ( 'button' , { name : 'Add Converter' } ) )
358+ expect ( screen . getByText ( 'font_size must be a number.' ) ) . toBeInTheDocument ( )
359+ expect ( mockedConvertersApi . createConverter ) . not . toHaveBeenCalled ( )
360+
361+ await user . clear ( fontSize )
362+ await user . type ( fontSize , '24' )
363+ await user . click ( screen . getByRole ( 'button' , { name : 'Add Converter' } ) )
364+ expect ( mockedConvertersApi . createConverter ) . toHaveBeenCalledWith ( {
365+ name : 'AddImageTextConverter' ,
366+ type : 'AddImageTextConverter' ,
367+ params : { img_to_add : 'data:image/png;base64,iVBORw0K' , font_size : 24 , rotation : 0 } ,
368+ } )
369+ } )
370+
371+ it ( 'should submit the catalog SATA word lists as arrays' , async ( ) => {
372+ const user = userEvent . setup ( )
373+ mockConverterParameters ( [
374+ { name : 'mask_token' , type_name : 'str' , is_list : false , choices : null , default : '[MASK]' , required : false } ,
375+ { ...wordSelectionParameter , name : 'selection_strategy' } ,
376+ { name : 'num_masks' , type_name : 'int' , is_list : false , choices : null , default : null , required : false } ,
377+ { name : 'stopwords' , type_name : 'list[str]' , is_list : true , choices : null , default : null , required : false } ,
378+ {
379+ name : 'candidate_words' , type_name : 'list[str]' , is_list : true , choices : null , default : null , required : false ,
380+ } ,
381+ ] , 'SATAMaskingConverter' )
382+ renderDialog ( )
383+ await selectConverterType ( 'SATAMaskingConverter' )
384+
385+ await user . type ( screen . getByRole ( 'textbox' , { name : 'stopwords' } ) , 'the, a' )
386+ await user . type ( screen . getByRole ( 'textbox' , { name : 'candidate_words' } ) , 'bomb' )
387+ await user . click ( screen . getByRole ( 'button' , { name : 'Add Converter' } ) )
388+ expect ( mockedConvertersApi . createConverter ) . toHaveBeenCalledWith ( {
389+ name : 'SATAMaskingConverter' ,
390+ type : 'SATAMaskingConverter' ,
391+ params : { mask_token : '[MASK]' , stopwords : [ 'the' , 'a' ] , candidate_words : [ 'bomb' ] } ,
392+ } )
393+ } )
394+
395+ it ( 'should send text values exactly as entered' , async ( ) => {
396+ const user = userEvent . setup ( )
397+ mockConverterParameters ( [
398+ { name : 'pattern' , type_name : 'str' , required : true } ,
399+ { name : 'replace' , type_name : 'str' , required : true } ,
400+ ] , 'SearchReplaceConverter' )
401+ renderDialog ( )
402+ await selectConverterType ( 'SearchReplaceConverter' )
403+
404+ await user . type ( screen . getByRole ( 'textbox' , { name : 'pattern *' } ) , 'cat' )
405+ await user . type ( screen . getByRole ( 'textbox' , { name : 'replace *' } ) , ' dog ' )
406+ await user . click ( screen . getByRole ( 'button' , { name : 'Add Converter' } ) )
407+ expect ( mockedConvertersApi . createConverter ) . toHaveBeenCalledWith ( {
408+ name : 'SearchReplaceConverter' ,
409+ type : 'SearchReplaceConverter' ,
410+ params : { pattern : 'cat' , replace : ' dog ' } ,
411+ } )
412+ } )
413+
340414 it ( 'selects a registered target for a target reference parameter' , async ( ) => {
341415 mockedConvertersApi . listConverterTypes . mockResolvedValue ( {
342416 items : [
0 commit comments