19 declare(strict_types=1);
    28         $settings = $this->getMockBuilder(ilSetting::class)
    29                          ->disableOriginalConstructor()
    31         $settings->method(
'get')->willReturnArgument(0);
    33         $language = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->onlyMethods(
    36         $language->method(
'txt')->willReturnArgument(0);
    40         $util_helper = $this->getMockBuilder(ilCertificateUtilHelper::class)
    41                             ->disableOriginalConstructor()
    44         $util_helper->method(
'stripSlashes')
    45                     ->willReturnArgument(0);
    50         $language = $this->getMockBuilder(ilLanguage::class)
    51                          ->disableOriginalConstructor()
    66         $output = $xlsFoParser->parse($form_data);
    73         $xml = str_replace([
"\n", 
"\r", 
"\t"], 
'', $xml);
    74         $xml = preg_replace(
"/>(\s+)</", 
"><", $xml);
    75         $xml = preg_replace(
'# {2,}#', 
' ', $xml);
    84             'certificate_text' => 
'<xml> Some Context </xml>',
    94         $settings = $this->getMockBuilder(ilSetting::class)
    95                          ->disableOriginalConstructor()
    99                  ->willReturn(
'Something');
   101         $pageFormats = $this->getMockBuilder(ilPageFormats::class)
   102                             ->disableOriginalConstructor()
   105         $pageFormats->method(
'fetchPageFormats')
   117         $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
   118                            ->disableOriginalConstructor()
   121         $utilHelper->method(
'stripSlashes')
   122                    ->willReturnOnConsecutiveCalls(
   131         $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
   134         $xlstProcess->method(
'process')
   137                             '/_xml' => 
'<html><body><xml> Some Context </xml></body></html>',
   138                             '/_xsl' => 
'<xml>Some XLS Content</xml>'   141                             'pageheight' => 
'297mm',
   142                             'pagewidth' => 
'210mm',
   143                             'backgroundimage' => 
'[BACKGROUND_IMAGE]',
   144                             'marginbody' => 
'1cm 2cm 3cm 4cm'   147                     ->willReturn(
'Something Processed');
   149         $language = $this->getMockBuilder(ilLanguage::class)
   150                          ->disableOriginalConstructor()
   153         $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
   156         $certificateXlsFileLoader->method(
'getXlsCertificateContent')
   157                                  ->willReturn(
'<xml>Some XLS Content</xml>');
   166             $certificateXlsFileLoader
   169         $output = $xlsFoParser->parse($formData);
   171         $this->assertSame(
'Something Processed', $output);
   176         $this->expectException(Exception::class);
   179             'certificate_text' => 
'<xml> Some Context <xml>',
   186             'pageformat' => 
'custom'   189         $settings = $this->getMockBuilder(ilSetting::class)
   190                          ->disableOriginalConstructor()
   194                  ->willReturn(
'Something');
   196         $pageFormats = $this->getMockBuilder(ilPageFormats::class)
   197                             ->disableOriginalConstructor()
   200         $pageFormats->method(
'fetchPageFormats')
   212         $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
   213                            ->disableOriginalConstructor()
   216         $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
   219         $language = $this->getMockBuilder(ilLanguage::class)
   220                          ->disableOriginalConstructor()
   221                          ->onlyMethods([
'txt'])
   223         $language->expects($this->once())->method(
'txt')->willReturn(
'certificate_not_well_formed');
   225         $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
   228         $certificateXlsFileLoader->method(
'getXlsCertificateContent')
   229                                  ->willReturn(
'<xml>Some XLS Content</xml>');
   238             $certificateXlsFileLoader
   241         $xlsFoParser->parse($formData);
   249             'certificate_text' => 
'<xml> Some Context </xml>',
   256             'pageformat' => 
'custom',
   257             'pagewidth' => 
'210mm',
   258             'pageheight' => 
'297mm'   261         $settings = $this->getMockBuilder(ilSetting::class)
   262                          ->disableOriginalConstructor()
   266                  ->willReturn(
'Something');
   268         $pageFormats = $this->getMockBuilder(ilPageFormats::class)
   269                             ->disableOriginalConstructor()
   272         $pageFormats->method(
'fetchPageFormats')
   284         $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
   285                            ->disableOriginalConstructor()
   288         $utilHelper->method(
'stripSlashes')
   289                    ->willReturnOnConsecutiveCalls(
   298         $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
   301         $xlstProcess->method(
'process')
   304                             '/_xml' => 
'<html><body><xml> Some Context </xml></body></html>',
   305                             '/_xsl' => 
'<xml>Some XLS Content</xml>'   308                             'pageheight' => 
'297mm',
   309                             'pagewidth' => 
'210mm',
   310                             'backgroundimage' => 
'[BACKGROUND_IMAGE]',
   311                             'marginbody' => 
'1cm 2cm 3cm 4cm'   314                     ->willReturn(
'Something Processed');
   316         $language = $this->getMockBuilder(ilLanguage::class)
   317                          ->disableOriginalConstructor()
   320         $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
   323         $certificateXlsFileLoader->method(
'getXlsCertificateContent')
   324                                  ->willReturn(
'<xml>Some XLS Content</xml>');
   333             $certificateXlsFileLoader
   336         $output = $xlsFoParser->parse($formData);
   338         $this->assertSame(
'Something Processed', $output);
   344             'certificate_text' => 
'<xml> Some Context </xml>',
   351             'pageformat' => 
'custom',
   352             'pagewidth' => 
'210mm',
   353             'pageheight' => 
'297mm'   356         $settings = $this->getMockBuilder(ilSetting::class)
   357                          ->disableOriginalConstructor()
   361                  ->willReturn(
'Something');
   363         $pageFormats = $this->getMockBuilder(ilPageFormats::class)
   364                             ->disableOriginalConstructor()
   367         $pageFormats->method(
'fetchPageFormats')
   379         $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
   380                            ->disableOriginalConstructor()
   383         $utilHelper->method(
'stripSlashes')
   384                    ->willReturnOnConsecutiveCalls(
   393         $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
   396         $xlstProcess->method(
'process')
   399                             '/_xml' => 
'<html><body><xml> Some Context </xml></body></html>',
   400                             '/_xsl' => 
'<xml>Some XLS Content</xml>'   403                             'pageheight' => 
'29.7mm',
   404                             'pagewidth' => 
'21.0mm',
   405                             'backgroundimage' => 
'[BACKGROUND_IMAGE]',
   406                             'marginbody' => 
'1cm 2cm 3cm 4cm'   409                     ->willReturn(
'Something Processed');
   411         $language = $this->getMockBuilder(ilLanguage::class)
   412                          ->disableOriginalConstructor()
   415         $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
   418         $certificateXlsFileLoader->method(
'getXlsCertificateContent')
   419                                  ->willReturn(
'<xml>Some XLS Content</xml>');
   428             $certificateXlsFileLoader
   431         $output = $xlsFoParser->parse($formData);
   433         $this->assertSame(
'Something Processed', $output);
   438         $expected_fo_with_centered_block = <<<EOT
   439 <?xml version=
"1.0"?>
   440 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
   441     <fo:layout-master-
set>
   442         <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
   443             <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
   444             <fo:region-before region-name=
"background-image" extent=
"0"/>
   446     </fo:layout-master-
set>
   447     <fo:page-sequence master-reference=
"ILIAS_certificate">
   448         <fo:
static-content flow-name=
"background-image">
   449             <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
   451                     <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
   453             </fo:block-container>
   455         <fo:flow flow-name=
"xsl-region-body">
   457                 <fo:block text-align=
"center"> </fo:block>
   464         yield 
'Centered Paragraph' => [
   466                 'certificate_text' => 
'<p style="text-align: center;"></p>',
   473                 'pageformat' => 
'custom',
   474                 'pagewidth' => 
'210mm',
   475                 'pageheight' => 
'297mm'   477             $expected_fo_with_centered_block
   480         $expected_fo_with_centered_block = <<<EOT
   481 <?xml version=
"1.0"?>
   482 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
   483     <fo:layout-master-
set>
   484         <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
   485             <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
   486             <fo:region-before region-name=
"background-image" extent=
"0"/>
   488     </fo:layout-master-
set>
   489     <fo:page-sequence master-reference=
"ILIAS_certificate">
   490         <fo:
static-content flow-name=
"background-image">
   491             <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
   493                     <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
   495             </fo:block-container>
   497         <fo:flow flow-name=
"xsl-region-body">
   499                 <fo:block> </fo:block>
   506         yield 
'Empty paragraph' => [
   508                 'certificate_text' => 
'<p></p>',
   515                 'pageformat' => 
'custom',
   516                 'pagewidth' => 
'210mm',
   517                 'pageheight' => 
'297mm'   519             $expected_fo_with_centered_block
   536         $expected_fo_with_centered_block = <<<EOT
   537 <?xml version=
"1.0"?>
   538 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
   539     <fo:layout-master-
set>
   540         <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
   541             <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
   542             <fo:region-before region-name=
"background-image" extent=
"0"/>
   544     </fo:layout-master-
set>
   545     <fo:page-sequence master-reference=
"ILIAS_certificate">
   546         <fo:
static-content flow-name=
"background-image">
   547             <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
   549                     <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
   551             </fo:block-container>
   553         <fo:flow flow-name=
"xsl-region-body">
   555                 <fo:block>[USER_FULLNAME]</fo:block>
   562         yield 
'Paragraph with Text' => [
   564                 'certificate_text' => 
'<p>[USER_FULLNAME]</p>',
   571                 'pageformat' => 
'custom',
   572                 'pagewidth' => 
'210mm',
   573                 'pageheight' => 
'297mm'   575             $expected_fo_with_centered_block
   578         $expected_fo_with_centered_block = <<<EOT
   579 <?xml version=
"1.0"?>
   580 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
   581     <fo:layout-master-
set>
   582         <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
   583             <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
   584             <fo:region-before region-name=
"background-image" extent=
"0"/>
   586     </fo:layout-master-
set>
   587     <fo:page-sequence master-reference=
"ILIAS_certificate">
   588         <fo:
static-content flow-name=
"background-image">
   589             <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
   591                     <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
   593             </fo:block-container>
   595         <fo:flow flow-name=
"xsl-region-body">
   597                 <fo:block><fo:
inline font-size=
"24pt">[USER_FULLNAME]</fo:
inline></fo:block>
   604         yield 
'Paragraph with Nodes' => [
   606                 'certificate_text' => 
'<p><span style="font-size: 24pt;">[USER_FULLNAME]</span></p>',
   613                 'pageformat' => 
'custom',
   614                 'pagewidth' => 
'210mm',
   615                 'pageheight' => 
'297mm'   617             $expected_fo_with_centered_block
 
testParseButXmlCheckerFindsAnError()
 
testParseWithNonCustomPageFormatting()
 
Class ChatMainBarProvider . 
 
testParseWithCustomPageFormatting()
 
testTransformingParagraphsWithNoTextAndNoChildrenResultsInNonBreakingSpaceXslFoBlock(array $form_data, string $fo)
nonBreakingSpaceIsAddedDataProvider 
 
noNonBreakingSpaceIsAddedDataProvider()
 
testCommasWillBeConvertedToPointInDecimalSepartor()
 
nonBreakingSpaceIsAddedDataProvider()
 
Class ilCertificateBaseTestCase. 
 
testTransformingParagraphsWithTextOrChildrenResultsNotInNonBreakingSpaceXslFoBlock(array $form_data, string $fo)
noNonBreakingSpaceIsAddedDataProvider 
 
normalizeXml(string $xml)
 
verifyFoGeneratedFromXhtml(array $form_data, string $fo)