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()
98 $settings->method(
'get')
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()
193 $settings->method(
'get')
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()
265 $settings->method(
'get')
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()
360 $settings->method(
'get')
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
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)
nonBreakingSpaceIsAddedDataProvider
testCommasWillBeConvertedToPointInDecimalSepartor()
Class ilCertificateBaseTestCase.
testTransformingParagraphsWithTextOrChildrenResultsNotInNonBreakingSpaceXslFoBlock(array $form_data, string $fo)
noNonBreakingSpaceIsAddedDataProvider
normalizeXml(string $xml)
static nonBreakingSpaceIsAddedDataProvider()
verifyFoGeneratedFromXhtml(array $form_data, string $fo)