@@ -387,6 +387,145 @@ test.describe('letter file validation', () => {
387387 expect ( template . csvHeaders ) . toBeUndefined ( ) ;
388388 } ) . toPass ( { timeout : 10_000 } ) ;
389389 } ) ;
390- } ) ;
391390
392- // TODO: Add test for parameter formatting in pdf
391+ test ( 'validation fails if pdf has incomplete address' , async ( { page } ) => {
392+ const createTemplatePage = new TemplateMgmtCreateLetterPage ( page ) ;
393+
394+ await createTemplatePage . loadPage ( ) ;
395+
396+ await createTemplatePage . nameInput . fill ( 'Incomplete address' ) ;
397+
398+ await createTemplatePage . setPdfFile (
399+ pdfUploadFixtures . noCustomPersonalisation . pdfIncompleteAddress . filepath
400+ ) ;
401+
402+ await createTemplatePage . clickSaveAndPreviewButton ( ) ;
403+
404+ await expect ( page ) . toHaveURL ( TemplateMgmtPreviewLetterPage . urlRegexp ) ;
405+
406+ const maybeTemplateId = TemplateMgmtPreviewLetterPage . getTemplateId (
407+ page . url ( )
408+ ) ;
409+
410+ expect ( maybeTemplateId ) . not . toBeUndefined ( ) ;
411+
412+ const templateId = maybeTemplateId as string ;
413+
414+ const key = {
415+ id : templateId ,
416+ owner : user . userId ,
417+ } ;
418+
419+ templateStorageHelper . addAdHocTemplateKey ( key ) ;
420+
421+ await expect ( async ( ) => {
422+ const template = await templateStorageHelper . getTemplate ( {
423+ id : templateId ,
424+ owner : user . userId ,
425+ } ) ;
426+
427+ expect ( template . files ?. pdfTemplate ?. virusScanStatus ) . toBe ( 'PASSED' ) ;
428+ expect ( template . templateStatus ) . toBe ( 'VALIDATION_FAILED' ) ;
429+ expect ( template . personalisationParameters ) . toBeUndefined ( ) ;
430+ expect ( template . csvHeaders ) . toBeUndefined ( ) ;
431+ } ) . toPass ( { timeout : 10_000 } ) ;
432+ } ) ;
433+
434+ test ( 'validation fails if pdf has empty parameters' , async ( { page } ) => {
435+ const createTemplatePage = new TemplateMgmtCreateLetterPage ( page ) ;
436+
437+ await createTemplatePage . loadPage ( ) ;
438+
439+ await createTemplatePage . nameInput . fill ( 'With empty parameters' ) ;
440+
441+ await createTemplatePage . setPdfFile (
442+ pdfUploadFixtures . withPersonalisation . pdfEmptyParams . filepath
443+ ) ;
444+
445+ await createTemplatePage . setCsvFile (
446+ pdfUploadFixtures . withPersonalisation . csvEmptyParams . filepath
447+ ) ;
448+
449+ await createTemplatePage . clickSaveAndPreviewButton ( ) ;
450+
451+ await expect ( page ) . toHaveURL ( TemplateMgmtPreviewLetterPage . urlRegexp ) ;
452+
453+ const maybeTemplateId = TemplateMgmtPreviewLetterPage . getTemplateId (
454+ page . url ( )
455+ ) ;
456+
457+ expect ( maybeTemplateId ) . not . toBeUndefined ( ) ;
458+
459+ const templateId = maybeTemplateId as string ;
460+
461+ const key = {
462+ id : templateId ,
463+ owner : user . userId ,
464+ } ;
465+
466+ templateStorageHelper . addAdHocTemplateKey ( key ) ;
467+
468+ await expect ( async ( ) => {
469+ const template = await templateStorageHelper . getTemplate ( {
470+ id : templateId ,
471+ owner : user . userId ,
472+ } ) ;
473+
474+ expect ( template . files ?. pdfTemplate ?. virusScanStatus ) . toBe ( 'PASSED' ) ;
475+ expect ( template . files ?. testDataCsv ?. virusScanStatus ) . toBe ( 'PASSED' ) ;
476+ expect ( template . templateStatus ) . toBe ( 'VALIDATION_FAILED' ) ;
477+ expect ( template . personalisationParameters ) . toBeUndefined ( ) ;
478+ expect ( template . csvHeaders ) . toBeUndefined ( ) ;
479+ } ) . toPass ( { timeout : 10_000 } ) ;
480+ } ) ;
481+
482+ test ( 'validation fails if pdf has non-sensible parameters' , async ( {
483+ page,
484+ } ) => {
485+ const createTemplatePage = new TemplateMgmtCreateLetterPage ( page ) ;
486+
487+ await createTemplatePage . loadPage ( ) ;
488+
489+ await createTemplatePage . nameInput . fill ( 'With nonsense parameters' ) ;
490+
491+ await createTemplatePage . setPdfFile (
492+ pdfUploadFixtures . withPersonalisation . pdfNonsenseParams . filepath
493+ ) ;
494+
495+ await createTemplatePage . setCsvFile (
496+ pdfUploadFixtures . withPersonalisation . csvNonsenseParams . filepath
497+ ) ;
498+
499+ await createTemplatePage . clickSaveAndPreviewButton ( ) ;
500+
501+ await expect ( page ) . toHaveURL ( TemplateMgmtPreviewLetterPage . urlRegexp ) ;
502+
503+ const maybeTemplateId = TemplateMgmtPreviewLetterPage . getTemplateId (
504+ page . url ( )
505+ ) ;
506+
507+ expect ( maybeTemplateId ) . not . toBeUndefined ( ) ;
508+
509+ const templateId = maybeTemplateId as string ;
510+
511+ const key = {
512+ id : templateId ,
513+ owner : user . userId ,
514+ } ;
515+
516+ templateStorageHelper . addAdHocTemplateKey ( key ) ;
517+
518+ await expect ( async ( ) => {
519+ const template = await templateStorageHelper . getTemplate ( {
520+ id : templateId ,
521+ owner : user . userId ,
522+ } ) ;
523+
524+ expect ( template . files ?. pdfTemplate ?. virusScanStatus ) . toBe ( 'PASSED' ) ;
525+ expect ( template . files ?. testDataCsv ?. virusScanStatus ) . toBe ( 'PASSED' ) ;
526+ expect ( template . templateStatus ) . toBe ( 'VALIDATION_FAILED' ) ;
527+ expect ( template . personalisationParameters ) . toBeUndefined ( ) ;
528+ expect ( template . csvHeaders ) . toBeUndefined ( ) ;
529+ } ) . toPass ( { timeout : 10_000 } ) ;
530+ } ) ;
531+ } ) ;
0 commit comments