19 declare(strict_types=1);
30 $settings = $this->getMockBuilder(ilSetting::class)
31 ->disableOriginalConstructor()
33 $settings->method(
'get')->willReturnArgument(0);
35 $language = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->onlyMethods(
38 $language->method(
'txt')->willReturnArgument(0);
42 $util_helper = $this->getMockBuilder(ilCertificateUtilHelper::class)
43 ->disableOriginalConstructor()
46 $util_helper->method(
'stripSlashes')
47 ->willReturnArgument(0);
52 $language = $this->getMockBuilder(ilLanguage::class)
53 ->disableOriginalConstructor()
68 $output = $xlsFoParser->parse($form_data);
75 $xml = str_replace([
"\n",
"\r",
"\t"],
'', $xml);
76 $xml = preg_replace(
"/>(\s+)</",
"><", $xml);
77 $xml = preg_replace(
'# {2,}#',
' ', $xml);
86 'certificate_text' =>
'<xml> Some Context </xml>',
96 $settings = $this->getMockBuilder(ilSetting::class)
97 ->disableOriginalConstructor()
100 $settings->method(
'get')
101 ->willReturn(
'Something');
103 $pageFormats = $this->getMockBuilder(ilPageFormats::class)
104 ->disableOriginalConstructor()
107 $pageFormats->method(
'fetchPageFormats')
119 $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
120 ->disableOriginalConstructor()
123 $utilHelper->method(
'stripSlashes')
124 ->willReturnOnConsecutiveCalls(
133 $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
136 $xlstProcess->method(
'process')
139 '/_xml' =>
'<html><body><xml> Some Context </xml></body></html>',
140 '/_xsl' =>
'<xml>Some XLS Content</xml>' 143 'pageheight' =>
'297mm',
144 'pagewidth' =>
'210mm',
145 'backgroundimage' =>
'[BACKGROUND_IMAGE]',
146 'marginbody' =>
'1cm 2cm 3cm 4cm' 149 ->willReturn(
'Something Processed');
151 $language = $this->getMockBuilder(ilLanguage::class)
152 ->disableOriginalConstructor()
155 $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
158 $certificateXlsFileLoader->method(
'getXlsCertificateContent')
159 ->willReturn(
'<xml>Some XLS Content</xml>');
168 $certificateXlsFileLoader
171 $output = $xlsFoParser->parse($formData);
173 $this->assertSame(
'Something Processed', $output);
178 $this->expectException(Exception::class);
181 'certificate_text' =>
'<xml> Some Context <xml>',
188 'pageformat' =>
'custom' 191 $settings = $this->getMockBuilder(ilSetting::class)
192 ->disableOriginalConstructor()
195 $settings->method(
'get')
196 ->willReturn(
'Something');
198 $pageFormats = $this->getMockBuilder(ilPageFormats::class)
199 ->disableOriginalConstructor()
202 $pageFormats->method(
'fetchPageFormats')
214 $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
215 ->disableOriginalConstructor()
218 $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
221 $language = $this->getMockBuilder(ilLanguage::class)
222 ->disableOriginalConstructor()
223 ->onlyMethods([
'txt'])
225 $language->expects($this->once())->method(
'txt')->willReturn(
'certificate_not_well_formed');
227 $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
230 $certificateXlsFileLoader->method(
'getXlsCertificateContent')
231 ->willReturn(
'<xml>Some XLS Content</xml>');
240 $certificateXlsFileLoader
243 $xlsFoParser->parse($formData);
251 'certificate_text' =>
'<xml> Some Context </xml>',
258 'pageformat' =>
'custom',
259 'pagewidth' =>
'210mm',
260 'pageheight' =>
'297mm' 263 $settings = $this->getMockBuilder(ilSetting::class)
264 ->disableOriginalConstructor()
267 $settings->method(
'get')
268 ->willReturn(
'Something');
270 $pageFormats = $this->getMockBuilder(ilPageFormats::class)
271 ->disableOriginalConstructor()
274 $pageFormats->method(
'fetchPageFormats')
286 $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
287 ->disableOriginalConstructor()
290 $utilHelper->method(
'stripSlashes')
291 ->willReturnOnConsecutiveCalls(
300 $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
303 $xlstProcess->method(
'process')
306 '/_xml' =>
'<html><body><xml> Some Context </xml></body></html>',
307 '/_xsl' =>
'<xml>Some XLS Content</xml>' 310 'pageheight' =>
'297mm',
311 'pagewidth' =>
'210mm',
312 'backgroundimage' =>
'[BACKGROUND_IMAGE]',
313 'marginbody' =>
'1cm 2cm 3cm 4cm' 316 ->willReturn(
'Something Processed');
318 $language = $this->getMockBuilder(ilLanguage::class)
319 ->disableOriginalConstructor()
322 $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
325 $certificateXlsFileLoader->method(
'getXlsCertificateContent')
326 ->willReturn(
'<xml>Some XLS Content</xml>');
335 $certificateXlsFileLoader
338 $output = $xlsFoParser->parse($formData);
340 $this->assertSame(
'Something Processed', $output);
346 'certificate_text' =>
'<xml> Some Context </xml>',
353 'pageformat' =>
'custom',
354 'pagewidth' =>
'210mm',
355 'pageheight' =>
'297mm' 358 $settings = $this->getMockBuilder(ilSetting::class)
359 ->disableOriginalConstructor()
362 $settings->method(
'get')
363 ->willReturn(
'Something');
365 $pageFormats = $this->getMockBuilder(ilPageFormats::class)
366 ->disableOriginalConstructor()
369 $pageFormats->method(
'fetchPageFormats')
381 $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
382 ->disableOriginalConstructor()
385 $utilHelper->method(
'stripSlashes')
386 ->willReturnOnConsecutiveCalls(
395 $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
398 $xlstProcess->method(
'process')
401 '/_xml' =>
'<html><body><xml> Some Context </xml></body></html>',
402 '/_xsl' =>
'<xml>Some XLS Content</xml>' 405 'pageheight' =>
'29.7mm',
406 'pagewidth' =>
'21.0mm',
407 'backgroundimage' =>
'[BACKGROUND_IMAGE]',
408 'marginbody' =>
'1cm 2cm 3cm 4cm' 411 ->willReturn(
'Something Processed');
413 $language = $this->getMockBuilder(ilLanguage::class)
414 ->disableOriginalConstructor()
417 $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
420 $certificateXlsFileLoader->method(
'getXlsCertificateContent')
421 ->willReturn(
'<xml>Some XLS Content</xml>');
430 $certificateXlsFileLoader
433 $output = $xlsFoParser->parse($formData);
435 $this->assertSame(
'Something Processed', $output);
440 $expected_fo_with_centered_block = <<<EOT
441 <?xml version=
"1.0"?>
442 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
443 <fo:layout-master-
set>
444 <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
445 <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
446 <fo:region-before region-name=
"background-image" extent=
"0"/>
448 </fo:layout-master-
set>
449 <fo:page-sequence master-reference=
"ILIAS_certificate">
450 <fo:
static-content flow-name=
"background-image">
451 <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
453 <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
455 </fo:block-container>
457 <fo:flow flow-name=
"xsl-region-body">
459 <fo:block text-align=
"center"> </fo:block>
466 yield
'Centered Paragraph' => [
468 'certificate_text' =>
'<p style="text-align: center;"></p>',
475 'pageformat' =>
'custom',
476 'pagewidth' =>
'210mm',
477 'pageheight' =>
'297mm' 479 $expected_fo_with_centered_block
482 $expected_fo_with_centered_block = <<<EOT
483 <?xml version=
"1.0"?>
484 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
485 <fo:layout-master-
set>
486 <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
487 <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
488 <fo:region-before region-name=
"background-image" extent=
"0"/>
490 </fo:layout-master-
set>
491 <fo:page-sequence master-reference=
"ILIAS_certificate">
492 <fo:
static-content flow-name=
"background-image">
493 <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
495 <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
497 </fo:block-container>
499 <fo:flow flow-name=
"xsl-region-body">
501 <fo:block> </fo:block>
508 yield
'Empty paragraph' => [
510 'certificate_text' =>
'<p></p>',
517 'pageformat' =>
'custom',
518 'pagewidth' =>
'210mm',
519 'pageheight' =>
'297mm' 521 $expected_fo_with_centered_block
528 #[DataProvider('nonBreakingSpaceIsAddedDataProvider')] 538 $expected_fo_with_centered_block = <<<EOT
539 <?xml version=
"1.0"?>
540 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
541 <fo:layout-master-
set>
542 <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
543 <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
544 <fo:region-before region-name=
"background-image" extent=
"0"/>
546 </fo:layout-master-
set>
547 <fo:page-sequence master-reference=
"ILIAS_certificate">
548 <fo:
static-content flow-name=
"background-image">
549 <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
551 <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
553 </fo:block-container>
555 <fo:flow flow-name=
"xsl-region-body">
557 <fo:block>[USER_FULLNAME]</fo:block>
564 yield
'Paragraph with Text' => [
566 'certificate_text' =>
'<p>[USER_FULLNAME]</p>',
573 'pageformat' =>
'custom',
574 'pagewidth' =>
'210mm',
575 'pageheight' =>
'297mm' 577 $expected_fo_with_centered_block
580 $expected_fo_with_centered_block = <<<EOT
581 <?xml version=
"1.0"?>
582 <fo:root xmlns:fo=
"http://www.w3.org/1999/XSL/Format" font-family=
"rpc_pdf_font">
583 <fo:layout-master-
set>
584 <fo:
simple-page-master master-name=
"ILIAS_certificate" page-height=
"297mm" page-width=
"210mm">
585 <fo:region-body margin=
"1cm 2cm 3cm 4cm"/>
586 <fo:region-before region-name=
"background-image" extent=
"0"/>
588 </fo:layout-master-
set>
589 <fo:page-sequence master-reference=
"ILIAS_certificate">
590 <fo:
static-content flow-name=
"background-image">
591 <fo:block-container absolute-position=
"absolute" top=
"0cm" left=
"0cm" z-index=
"0">
593 <fo:external-graphic src=
"url([BACKGROUND_IMAGE])" content-height=
"297mm" content-width=
"210mm"/>
595 </fo:block-container>
597 <fo:flow flow-name=
"xsl-region-body">
599 <fo:block><fo:
inline font-size=
"24pt">[USER_FULLNAME]</fo:
inline></fo:block>
606 yield
'Paragraph with Nodes' => [
608 'certificate_text' =>
'<p><span style="font-size: 24pt;">[USER_FULLNAME]</span></p>',
615 'pageformat' =>
'custom',
616 'pagewidth' =>
'210mm',
617 'pageheight' =>
'297mm' 619 $expected_fo_with_centered_block
626 #[DataProvider('noNonBreakingSpaceIsAddedDataProvider')] simple()
description: > This example show how the UI-Elements itself looks like.
testParseButXmlCheckerFindsAnError()
testParseWithNonCustomPageFormatting()
Interface Observer Contains several chained tasks and infos about them.
static noNonBreakingSpaceIsAddedDataProvider()
testParseWithCustomPageFormatting()
testTransformingParagraphsWithNoTextAndNoChildrenResultsInNonBreakingSpaceXslFoBlock(array $form_data, string $fo)
testCommasWillBeConvertedToPointInDecimalSepartor()
testTransformingParagraphsWithTextOrChildrenResultsNotInNonBreakingSpaceXslFoBlock(array $form_data, string $fo)
normalizeXml(string $xml)
static nonBreakingSpaceIsAddedDataProvider()
verifyFoGeneratedFromXhtml(array $form_data, string $fo)