ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilXlsFoParserTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
25 {
26  public function testParseWithNonCustomPageFormatting(): void
27  {
28  $formData = [
29  'certificate_text' => '<xml> Some Context </xml>',
30  'margin_body' => [
31  'top' => '1cm',
32  'right' => '2cm',
33  'bottom' => '3cm',
34  'left' => '4cm'
35  ],
36  'pageformat' => 'a4'
37  ];
38 
39  $settings = $this->getMockBuilder(ilSetting::class)
40  ->disableOriginalConstructor()
41  ->getMock();
42 
43  $settings->method('get')
44  ->willReturn('Something');
45 
46  $pageFormats = $this->getMockBuilder(ilPageFormats::class)
47  ->disableOriginalConstructor()
48  ->getMock();
49 
50  $pageFormats->method('fetchPageFormats')
51  ->willReturn([
52  'a4' => [
53  'name' => 'A4',
54  'value' => 'a4',
55  'width' => '210mm',
56  'height' => '297mm'
57  ],
58  ]);
59 
60  $xmlChecker = new ilXMLChecker(new ILIAS\Data\Factory());
61 
62  $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
63  ->getMock();
64 
65  $utilHelper->method('stripSlashes')
66  ->willReturnOnConsecutiveCalls(
67  '297mm',
68  '210mm',
69  '1cm',
70  '2cm',
71  '3cm',
72  '4cm'
73  );
74 
75  $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
76  ->getMock();
77 
78  $xlstProcess->method('process')
79  ->with(
80  [
81  '/_xml' => '<html><body><xml> Some Context </xml></body></html>',
82  '/_xsl' => '<xml>Some XLS Content</xml>'
83  ],
84  [
85  'pageheight' => '297mm',
86  'pagewidth' => '210mm',
87  'backgroundimage' => '[BACKGROUND_IMAGE]',
88  'marginbody' => '1cm 2cm 3cm 4cm'
89  ]
90  )
91  ->willReturn('Something Processed');
92 
93  $language = $this->getMockBuilder(ilLanguage::class)
94  ->disableOriginalConstructor()
95  ->getMock();
96 
97  $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
98  ->getMock();
99 
100  $certificateXlsFileLoader->method('getXlsCertificateContent')
101  ->willReturn('<xml>Some XLS Content</xml>');
102 
103  $xlsFoParser = new ilXlsFoParser(
104  $settings,
105  $pageFormats,
106  $xmlChecker,
107  $utilHelper,
108  $xlstProcess,
109  $language,
110  $certificateXlsFileLoader
111  );
112 
113  $output = $xlsFoParser->parse($formData);
114 
115  $this->assertSame('Something Processed', $output);
116  }
117 
118  public function testParseButXmlCheckerFindsAnError(): void
119  {
120  $this->expectException(Exception::class);
121 
122  $formData = [
123  'certificate_text' => '<xml> Some Context <xml>',
124  'margin_body' => [
125  'top' => '1cm',
126  'right' => '2cm',
127  'bottom' => '3cm',
128  'left' => '4cm'
129  ],
130  'pageformat' => 'custom'
131  ];
132 
133  $settings = $this->getMockBuilder(ilSetting::class)
134  ->disableOriginalConstructor()
135  ->getMock();
136 
137  $settings->method('get')
138  ->willReturn('Something');
139 
140  $pageFormats = $this->getMockBuilder(ilPageFormats::class)
141  ->disableOriginalConstructor()
142  ->getMock();
143 
144  $pageFormats->method('fetchPageFormats')
145  ->willReturn([
146  'a4' => [
147  'name' => 'A4',
148  'value' => 'a4',
149  'width' => '210mm',
150  'height' => '297mm'
151  ],
152  ]);
153 
154  $xmlChecker = new ilXMLChecker(new ILIAS\Data\Factory());
155 
156  $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
157  ->getMock();
158 
159  $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
160  ->getMock();
161 
162  $language = $this->getMockBuilder(ilLanguage::class)
163  ->disableOriginalConstructor()
164  ->onlyMethods(['txt'])
165  ->getMock();
166  $language->expects($this->once())->method('txt')->willReturn('certificate_not_well_formed');
167 
168  $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
169  ->getMock();
170 
171  $certificateXlsFileLoader->method('getXlsCertificateContent')
172  ->willReturn('<xml>Some XLS Content</xml>');
173 
174  $xlsFoParser = new ilXlsFoParser(
175  $settings,
176  $pageFormats,
177  $xmlChecker,
178  $utilHelper,
179  $xlstProcess,
180  $language,
181  $certificateXlsFileLoader
182  );
183 
184  $xlsFoParser->parse($formData);
185 
186  $this->fail();
187  }
188 
189  public function testParseWithCustomPageFormatting(): void
190  {
191  $formData = [
192  'certificate_text' => '<xml> Some Context </xml>',
193  'margin_body' => [
194  'top' => '1cm',
195  'right' => '2cm',
196  'bottom' => '3cm',
197  'left' => '4cm'
198  ],
199  'pageformat' => 'custom',
200  'pagewidth' => '210mm',
201  'pageheight' => '297mm'
202  ];
203 
204  $settings = $this->getMockBuilder(ilSetting::class)
205  ->disableOriginalConstructor()
206  ->getMock();
207 
208  $settings->method('get')
209  ->willReturn('Something');
210 
211  $pageFormats = $this->getMockBuilder(ilPageFormats::class)
212  ->disableOriginalConstructor()
213  ->getMock();
214 
215  $pageFormats->method('fetchPageFormats')
216  ->willReturn([
217  'a4' => [
218  'name' => 'A4',
219  'value' => 'a4',
220  'width' => '210mm',
221  'height' => '297mm'
222  ],
223  ]);
224 
225  $xmlChecker = new ilXMLChecker(new ILIAS\Data\Factory());
226 
227  $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
228  ->getMock();
229 
230  $utilHelper->method('stripSlashes')
231  ->willReturnOnConsecutiveCalls(
232  '297mm',
233  '210mm',
234  '1cm',
235  '2cm',
236  '3cm',
237  '4cm'
238  );
239 
240  $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
241  ->getMock();
242 
243  $xlstProcess->method('process')
244  ->with(
245  [
246  '/_xml' => '<html><body><xml> Some Context </xml></body></html>',
247  '/_xsl' => '<xml>Some XLS Content</xml>'
248  ],
249  [
250  'pageheight' => '297mm',
251  'pagewidth' => '210mm',
252  'backgroundimage' => '[BACKGROUND_IMAGE]',
253  'marginbody' => '1cm 2cm 3cm 4cm'
254  ]
255  )
256  ->willReturn('Something Processed');
257 
258  $language = $this->getMockBuilder(ilLanguage::class)
259  ->disableOriginalConstructor()
260  ->getMock();
261 
262  $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
263  ->getMock();
264 
265  $certificateXlsFileLoader->method('getXlsCertificateContent')
266  ->willReturn('<xml>Some XLS Content</xml>');
267 
268  $xlsFoParser = new ilXlsFoParser(
269  $settings,
270  $pageFormats,
271  $xmlChecker,
272  $utilHelper,
273  $xlstProcess,
274  $language,
275  $certificateXlsFileLoader
276  );
277 
278  $output = $xlsFoParser->parse($formData);
279 
280  $this->assertSame('Something Processed', $output);
281  }
282 
284  {
285  $formData = [
286  'certificate_text' => '<xml> Some Context </xml>',
287  'margin_body' => [
288  'top' => '1cm',
289  'right' => '2cm',
290  'bottom' => '3cm',
291  'left' => '4cm'
292  ],
293  'pageformat' => 'custom',
294  'pagewidth' => '210mm',
295  'pageheight' => '297mm'
296  ];
297 
298  $settings = $this->getMockBuilder(ilSetting::class)
299  ->disableOriginalConstructor()
300  ->getMock();
301 
302  $settings->method('get')
303  ->willReturn('Something');
304 
305  $pageFormats = $this->getMockBuilder(ilPageFormats::class)
306  ->disableOriginalConstructor()
307  ->getMock();
308 
309  $pageFormats->method('fetchPageFormats')
310  ->willReturn([
311  'a4' => [
312  'name' => 'A4',
313  'value' => 'a4',
314  'width' => '21,0mm',
315  'height' => '29,7mm'
316  ],
317  ]);
318 
319  $xmlChecker = new ilXMLChecker(new ILIAS\Data\Factory());
320 
321  $utilHelper = $this->getMockBuilder(ilCertificateUtilHelper::class)
322  ->getMock();
323 
324  $utilHelper->method('stripSlashes')
325  ->willReturnOnConsecutiveCalls(
326  '29,7mm',
327  '21,0mm',
328  '1cm',
329  '2cm',
330  '3cm',
331  '4cm'
332  );
333 
334  $xlstProcess = $this->getMockBuilder(ilCertificateXlstProcess::class)
335  ->getMock();
336 
337  $xlstProcess->method('process')
338  ->with(
339  [
340  '/_xml' => '<html><body><xml> Some Context </xml></body></html>',
341  '/_xsl' => '<xml>Some XLS Content</xml>'
342  ],
343  [
344  'pageheight' => '29.7mm',
345  'pagewidth' => '21.0mm',
346  'backgroundimage' => '[BACKGROUND_IMAGE]',
347  'marginbody' => '1cm 2cm 3cm 4cm'
348  ]
349  )
350  ->willReturn('Something Processed');
351 
352  $language = $this->getMockBuilder(ilLanguage::class)
353  ->disableOriginalConstructor()
354  ->getMock();
355 
356  $certificateXlsFileLoader = $this->getMockBuilder(ilCertificateXlsFileLoader::class)
357  ->getMock();
358 
359  $certificateXlsFileLoader->method('getXlsCertificateContent')
360  ->willReturn('<xml>Some XLS Content</xml>');
361 
362  $xlsFoParser = new ilXlsFoParser(
363  $settings,
364  $pageFormats,
365  $xmlChecker,
366  $utilHelper,
367  $xlstProcess,
368  $language,
369  $certificateXlsFileLoader
370  );
371 
372  $output = $xlsFoParser->parse($formData);
373 
374  $this->assertSame('Something Processed', $output);
375  }
376 }
array $settings
Setting values (LTI parameters, custom parameters and local parameters).
Definition: System.php:200
Class ChatMainBarProvider .
testCommasWillBeConvertedToPointInDecimalSepartor()
Class ilCertificateBaseTestCase.