ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
PCMediaObjectTest.php
Go to the documentation of this file.
1<?php
2
19use PHPUnit\Framework\TestCase;
20use PHPUnit\Framework\MockObject\MockObject;
21
22require_once("./components/ILIAS/MediaObjects/ImageMap/class.ilMapArea.php");
23
28{
32 protected function getObjectAdapterMock(): MockObject
33 {
34 $object_adapter = $this->getMockBuilder(\ILIAS\Repository\Object\ObjectAdapter::class)
35 ->disableOriginalConstructor()
36 ->getMock();
37 $object_adapter->method("getTypeForObjId")
38 ->willReturnCallback(fn() => "dummy");
39 return $object_adapter;
40 }
41
42 public function testConstruction(): void
43 {
44 $page = $this->getEmptyPageWithDom();
45 $pc = new ilPCMediaObject($page);
46 $this->assertEquals(
47 ilPCMediaObject::class,
48 get_class($pc)
49 );
50 }
51
52 public function testCreate(): void
53 {
54 $page = $this->getEmptyPageWithDom();
55 $pc = new ilPCMediaObject($page);
56 $pc->create($page, "pg");
57 $this->assertXmlEquals(
58 '<PageObject HierId="pg"></PageObject>',
59 $page->getXMLFromDom()
60 );
61 }
62
63 public function testCreateAlias(): void
64 {
65 $page = $this->getEmptyPageWithDom();
66 $pc = new ilPCMediaObject($page);
67 $pc->setMediaObject($this->getMediaObjectMock());
68 $pc->createAlias($page, "pg");
69
70 $page->stripHierIDs();
71
72 $expected = <<<EOT
73<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
74EOT;
75
76 $this->assertXmlEquals(
77 $expected,
78 $page->getXMLFromDom()
79 );
80 }
81
83 {
84 $pc = new ilPCMediaObject($page);
85 $pc->setMediaObject($this->getMediaObjectMock());
86 $pc->createAlias($page, "pg");
87 $page->addHierIDs();
88 $page->insertPCIds();
89 $pc->setHierId("1");
90 $pc->setPCId($page->getPCIdForHierId("1"));
91 $pc->setDomNode($pc->getDomNode());
92 return $pc;
93 }
94
95 public function testDump(): void
96 {
97 $page = $this->getEmptyPageWithDom();
98 $pc = $this->getMediaObjectInPage($page);
99
100 $page->stripHierIDs();
101 $page->stripPCIDs();
102
103 $expected = <<<EOT
104<PageContent><MediaObject><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"/></MediaAliasItem></MediaObject></PageContent>
105EOT;
106
107 $this->assertXmlEquals(
108 $expected,
109 $pc->dumpXML()
110 );
111 }
112
113 public function testSetClass(): void
114 {
115 $page = $this->getEmptyPageWithDom();
116 $pc = $this->getMediaObjectInPage($page);
117
118 $pc->setClass("MyClass");
119
120 $this->assertEquals(
121 "MyClass",
122 $pc->getClass()
123 );
124
125 $page->stripHierIDs();
126 $page->stripPCIDs();
127
128 $expected = <<<EOT
129<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0" Class="MyClass"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"/></MediaAliasItem></MediaObject></PageContent></PageObject>
130EOT;
131
132 $this->assertXmlEquals(
133 $expected,
134 $page->getXMLFromDom()
135 );
136 }
137
138 public function testCaptionClass(): void
139 {
140 $page = $this->getEmptyPageWithDom();
141 $pc = $this->getMediaObjectInPage($page);
142
143 $pc->setCaptionClass("MyCaptionClass");
144
145 $this->assertEquals(
146 "MyCaptionClass",
147 $pc->getCaptionClass()
148 );
149
150 $page->stripHierIDs();
151 $page->stripPCIDs();
152
153 $expected = <<<EOT
154<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0" CaptionClass="MyCaptionClass"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"/></MediaAliasItem></MediaObject></PageContent></PageObject>
155EOT;
156
157 $this->assertXmlEquals(
158 $expected,
159 $page->getXMLFromDom()
160 );
161 }
162
163 // Media alias item tests
164
165 public function checkMAProps(
166 Closure $assert,
167 ?string $expected = null
168 ): void {
169 $page = $this->getEmptyPageWithDom();
170 $pc = $this->getMediaObjectInPage($page);
171 $ma = $pc->getStandardMediaAliasItem();
172
173 $assert($ma);
174
175 $page->stripHierIDs();
176 $page->stripPCIDs();
177
178 if (!is_null($expected)) {
179 $this->assertXmlEquals(
180 $expected,
181 $page->getXMLFromDom()
182 );
183 }
184 }
185
186 public function testWidth(): void
187 {
188 $this->checkMAProps(
189 function (ilMediaAliasItem $ma): void {
190 $this->assertEquals(
191 false,
192 $ma->definesSize()
193 );
194 $ma->setWidth("222");
195 $this->assertEquals(
196 "222",
197 $ma->getWidth()
198 );
199 $this->assertEquals(
200 true,
201 $ma->definesSize()
202 );
203 },
204 $expected = <<<EOT
205<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left" Width="222"/></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"/></MediaAliasItem></MediaObject></PageContent></PageObject>
206EOT
207 );
208 }
209
210 public function testHeight(): void
211 {
212 $this->checkMAProps(
213 function (ilMediaAliasItem $ma): void {
214 $ma->setHeight("11");
215 $this->assertEquals(
216 "11",
217 $ma->getHeight()
218 );
219 },
220 $expected = <<<EOT
221<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left" Height="11"/></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"/></MediaAliasItem></MediaObject></PageContent></PageObject>
222EOT
223 );
224 }
225
226 public function testDeriveSize(): void
227 {
228 $this->checkMAProps(
229 function (ilMediaAliasItem $ma): void {
230 $this->assertEquals(
231 false,
232 $ma->definesSize()
233 );
234 $ma->setWidth("222");
235 $ma->setHeight("111");
236 $this->assertEquals(
237 true,
238 $ma->definesSize()
239 );
240 $ma->deriveSize();
241 $this->assertEquals(
242 false,
243 $ma->definesSize()
244 );
245 },
246 $expected = <<<EOT
247<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"/></MediaAliasItem></MediaObject></PageContent></PageObject>
248EOT
249 );
250 }
251
252 public function testCaption(): void
253 {
254 $this->checkMAProps(
255 function (ilMediaAliasItem $ma): void {
256 $this->assertEquals(
257 false,
258 $ma->definesCaption()
259 );
260 $ma->setCaption("My Caption");
261 $this->assertEquals(
262 "My Caption",
263 $ma->getCaption()
264 );
265 $this->assertEquals(
266 true,
267 $ma->definesCaption()
268 );
269 },
270 $expected = <<<EOT
271<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout><Caption Align="bottom">My Caption</Caption></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
272EOT
273 );
274 }
275
276 public function testDeriveCaption(): void
277 {
278 $this->checkMAProps(
279 function (ilMediaAliasItem $ma): void {
280 $ma->setCaption("My Caption");
281 $this->assertEquals(
282 true,
283 $ma->definesCaption()
284 );
285 $ma->deriveCaption();
286 $this->assertEquals(
287 false,
288 $ma->definesCaption()
289 );
290 },
291 $expected = <<<EOT
292<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
293EOT
294 );
295 }
296
297 public function testTextRepresentation(): void
298 {
299 $this->checkMAProps(
300 function (ilMediaAliasItem $ma): void {
301 $this->assertEquals(
302 false,
304 );
305 $ma->setTextRepresentation("My Text");
306 $this->assertEquals(
307 "My Text",
309 );
310 $this->assertEquals(
311 true,
313 );
314 },
315 $expected = <<<EOT
316<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout><TextRepresentation>My Text</TextRepresentation></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
317EOT
318 );
319 }
320
321 public function testDeriveTextRepresentation(): void
322 {
323 $this->checkMAProps(
324 function (ilMediaAliasItem $ma): void {
325 $ma->setTextRepresentation("My Text");
326 $this->assertEquals(
327 true,
329 );
331 $this->assertEquals(
332 false,
334 );
335 },
336 $expected = <<<EOT
337<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
338EOT
339 );
340 }
341
342 public function testHorizontalAlign(): void
343 {
344 $this->checkMAProps(
345 function (ilMediaAliasItem $ma): void {
346 $ma->setHorizontalAlign("Right");
347 $this->assertEquals(
348 "Right",
349 $ma->getHorizontalAlign()
350 );
351 },
352 $expected = <<<EOT
353<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Right"></Layout></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
354EOT
355 );
356 }
357
358 public function testParameters(): void
359 {
360 $this->checkMAProps(
361 function (ilMediaAliasItem $ma): void {
362 $this->assertEquals(
363 false,
364 $ma->definesParameters()
365 );
366 $ma->setParameters([
367 "par1" => "val1",
368 "par2" => "val2"
369 ]);
370 $this->assertEquals(
371 [
372 "par1" => "val1",
373 "par2" => "val2"
374 ],
375 $ma->getParameters()
376 );
377 $this->assertEquals(
378 true,
379 $ma->definesParameters()
380 );
381 $this->assertEquals(
382 'par1="val1", par2="val2"',
383 $ma->getParameterString()
384 );
385 },
386 $expected = <<<EOT
387<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout><Parameter Name="par1" Value="val1"></Parameter><Parameter Name="par2" Value="val2"></Parameter></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
388EOT
389 );
390 }
391
392 public function testDeriveParameters(): void
393 {
394 $this->checkMAProps(
395 function (ilMediaAliasItem $ma): void {
396 $ma->setParameters([
397 "par1" => "val1",
398 "par2" => "val2"
399 ]);
400 $ma->deriveParameters();
401 $this->assertEquals(
402 false,
403 $ma->definesParameters()
404 );
405 },
406 $expected = <<<EOT
407<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
408EOT
409 );
410 }
411
412 public function testAddMapArea(): void
413 {
414 $this->checkMAProps(
415 function (ilMediaAliasItem $ma): void {
416 $ma->addMapArea(
418 "10,10,100,100",
419 "Area Title",
420 [
421 "LinkType" => "ext",
422 "Href" => "http://www.ilias.de"
423 ],
424 "One"
425 );
426 $this->assertEquals(
427 [
428 0 => [
429 "Nr" => 1,
430 "Shape" => "Rect",
431 "Coords" => "10,10,100,100",
432 "HighlightMode" => "",
433 "HighlightClass" => "",
434 "Id" => "One",
435 "Link" => [
436 "LinkType" => "ExtLink",
437 "Href" => "http://www.ilias.de",
438 "Title" => "Area Title"
439 ]
440 ]
441 ],
442 $ma->getMapAreas()
443 );
444 $this->assertEquals(
445 "http://www.ilias.de",
446 $ma->getHrefOfArea(1)
447 );
448 },
449 $expected = <<<EOT
450<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout><MapArea Shape="Rect" Coords="10,10,100,100" Id="One"><ExtLink Href="http://www.ilias.de">Area Title</ExtLink></MapArea></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
451EOT
452 );
453 }
454
455 public function testDeleteMapArea(): void
456 {
457 $this->checkMAProps(
458 function (ilMediaAliasItem $ma): void {
459 $ma->addMapArea(
461 "10,10,100,100",
462 "Area Title",
463 [
464 "LinkType" => "ext",
465 "Href" => "http://www.ilias.de"
466 ],
467 "One"
468 );
469 $ma->addMapArea(
471 "11,11,101,101",
472 "Area Title 2",
473 [
474 "LinkType" => "ext",
475 "Href" => "http://ilias.de"
476 ],
477 "Two"
478 );
479 $ma->deleteMapArea(1);
480 },
481 $expected = <<<EOT
482<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout><MapArea Shape="Rect" Coords="11,11,101,101" Id="Two"><ExtLink Href="http://ilias.de">Area Title 2</ExtLink></MapArea></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
483EOT
484 );
485 }
486
487 public function testDeleteMapAreaById(): void
488 {
489 $this->checkMAProps(
490 function (ilMediaAliasItem $ma): void {
491 $ma->addMapArea(
493 "10,10,100,100",
494 "Area Title",
495 [
496 "LinkType" => "ext",
497 "Href" => "http://www.ilias.de"
498 ],
499 "One"
500 );
501 $ma->addMapArea(
503 "11,11,101,101",
504 "Area Title 2",
505 [
506 "LinkType" => "ext",
507 "Href" => "http://ilias.de"
508 ],
509 "Two"
510 );
511 $ma->deleteMapAreaById("One");
512 },
513 $expected = <<<EOT
514<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout><MapArea Shape="Rect" Coords="11,11,101,101" Id="Two"><ExtLink Href="http://ilias.de">Area Title 2</ExtLink></MapArea></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
515EOT
516 );
517 }
518
519 public function testDeleteAllMapAreas(): void
520 {
521 $this->checkMAProps(
522 function (ilMediaAliasItem $ma): void {
523 $ma->addMapArea(
525 "10,10,100,100",
526 "Area Title",
527 [
528 "LinkType" => "ext",
529 "Href" => "http://www.ilias.de"
530 ],
531 "One"
532 );
533 $ma->addMapArea(
535 "11,11,101,101",
536 "Area Title 2",
537 [
538 "LinkType" => "ext",
539 "Href" => "http://ilias.de"
540 ],
541 "Two"
542 );
543 $ma->deleteAllMapAreas();
544 },
545 $expected = <<<EOT
546<PageObject><PageContent><MediaObject><MediaAlias OriginId="il__mob_0"></MediaAlias><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"></Layout></MediaAliasItem><MediaAliasItem Purpose="Fullscreen"><Layout Width="100" Height="50"></Layout></MediaAliasItem></MediaObject></PageContent></PageObject>
547EOT
548 );
549 }
550
551 public function testAreaProps(): void
552 {
553 $this->checkMAProps(
554 function (ilMediaAliasItem $ma): void {
555 $ma->addMapArea(
557 "10,10,100,100",
558 "Area Title",
559 [
560 "LinkType" => "int",
561 "Type" => "ltype",
562 "Target" => "ltarget",
563 "TargetFrame" => "ltargetframe"
564 ],
565 "One"
566 );
567 $this->assertEquals(
568 "int",
569 $ma->getLinkTypeOfArea(1)
570 );
571 $this->assertEquals(
572 "ltype",
573 $ma->getTypeOfArea(1)
574 );
575 $this->assertEquals(
576 "ltarget",
577 $ma->getTargetOfArea(1)
578 );
579 $this->assertEquals(
580 "ltargetframe",
582 );
583 $this->assertEquals(
584 "Area Title",
585 $ma->getTitleOfArea(1)
586 );
587 },
588 null
589 );
590 }
591}
assertXmlEquals(string $expected_xml_as_string, string $html_xml_string)
checkMAProps(Closure $assert, ?string $expected=null)
getMediaObjectInPage(ilPageObject $page)
Title class.
Definition: Title.php:42
const IL_AREA_RECT
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getHrefOfArea(int $a_nr)
Get href (only external link)
setParameters(array $a_par_array)
setHorizontalAlign(string $a_halign)
definesTextRepresentation()
check if alias item defines own TextRepresentation or derives TextRepresentation from object
setTextRepresentation(string $a_text_representation)
getTitleOfArea(int $a_nr)
Get title.
setHeight(string $a_height)
getTargetFrameOfArea(int $a_nr)
Get target frame (only internal link)
addMapArea(string $a_shape_type, string $a_coords, string $a_title, array $a_link, string $a_id="", string $hl_mode="", string $hl_class="",)
Add a new area to the map.
definesParameters()
check if alias item defines own parameters or derives parameters from object
getParameterString()
Get all parameters as string.
setWidth(string $a_width)
definesSize()
check if alias item defines own size or derives size from object
getTypeOfArea(int $a_nr)
Get type (only internal link)
deleteMapArea(int $a_nr)
Delete a sinlge map area.
deriveSize()
derive size from object (-> width and height attributes are removed from layout element)
deriveParameters()
derive parameters from object (-> all parameter elements are removed from media alias item)
deleteAllMapAreas()
Delete all map areas.
deriveTextRepresentation()
derive TextRepresentation from object (-> TextRepresentation element is removed from media alias item...
deriveCaption()
derive caption from object (-> caption element is removed from media alias item)
getParameters()
Get all parameters as array.
getTargetOfArea(int $a_nr)
Get target (only internal link)
getMapAreas()
Get all map areas.
setCaption(string $a_caption)
getLinkTypeOfArea(int $a_nr)
Get link type.
deleteMapAreaById(string $a_id)
Delete map areas by id.
definesCaption()
check if alias item defines own caption or derives caption from object
Class ilPCMediaObject Media content object (see ILIAS DTD)
Class ilPageObject Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)
addHierIDs()
Add hierarchical ID (e.g.
insertPCIds()
Insert Page Content IDs.
getPCIdForHierId(string $hier_id)
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.