ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
PCInteractiveImageTest.php
Go to the documentation of this file.
1<?php
2
19use PHPUnit\Framework\TestCase;
20use PHPUnit\Framework\MockObject\Stub;
21
22require_once("./components/ILIAS/MediaObjects/ImageMap/class.ilMapArea.php");
23
28{
32 protected function getMediaObjectMock(): Stub
33 {
34 $media_item = new ilMediaItem();
35 $media_item->setWidth("100");
36 $media_item->setHeight("50");
37 $media_object = $this->createStub(ilObjMediaObject::class);
38 $media_object->method("getMediaItem")
39 ->willReturnCallback(fn() => $media_item);
40 return $media_object;
41 }
42
46 protected function getObjectAdapterMock(): Stub
47 {
48 $object_adapter = $this->createStub(\ILIAS\Repository\Object\ObjectAdapter::class);
49 $object_adapter->method("getTypeForObjId")
50 ->willReturnCallback(fn() => "dummy");
51 return $object_adapter;
52 }
53
54 public function testConstruction(): void
55 {
56 $page = $this->getEmptyPageWithDom();
57 $pc = new ilPCInteractiveImage($page);
58 $this->assertEquals(
59 ilPCInteractiveImage::class,
60 get_class($pc)
61 );
62 }
63
64 public function testCreate(): void
65 {
66 $page = $this->getEmptyPageWithDom();
67 $pc = new ilPCInteractiveImage($page);
68 $pc->create($page, "pg");
69 $this->assertXmlEquals(
70 '<PageObject HierId="pg"></PageObject>',
71 $page->getXMLFromDom()
72 );
73 }
74
75 public function testCreateAlias(): void
76 {
77 $page = $this->getEmptyPageWithDom();
78 $pc = new ilPCInteractiveImage($page);
79 $pc->setMediaObject($this->getMediaObjectMock());
80 $pc->createAlias($page, "pg");
81
82 $expected = <<<EOT
83<PageObject HierId="pg"><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem></InteractiveImage></PageContent></PageObject>
84EOT;
85
86 $this->assertXmlEquals(
87 $expected,
88 $page->getXMLFromDom()
89 );
90 }
91
92 public function testDump(): void
93 {
94 $page = $this->getEmptyPageWithDom();
95 $pc = new ilPCInteractiveImage($page);
96 $pc->setMediaObject($this->getMediaObjectMock());
97 $pc->createAlias($page, "pg");
98
99 $expected = <<<EOT
100<PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem></InteractiveImage></PageContent>
101EOT;
102
103 $this->assertXmlEquals(
104 $expected,
105 $pc->dumpXML()
106 );
107 }
108
109 public function testAddContentPopup(): void
110 {
111 $page = $this->getEmptyPageWithDom();
112 $pc = new ilPCInteractiveImage($page);
113 $pc->setMediaObject($this->getMediaObjectMock());
114 $pc->createAlias($page, "pg");
115 $pc->addContentPopup();
116
117 //echo $page->getXMLFromDom();
118 //exit;
119
120 $expected = <<<EOT
121<PageObject HierId="pg"><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><ContentPopup Title="" Nr="1"/></InteractiveImage></PageContent></PageObject>
122EOT;
123
124 $this->assertXmlEquals(
125 $expected,
126 $page->getXMLFromDom()
127 );
128 }
129
130 public function testGetPopups(): void
131 {
132 $page = $this->getEmptyPageWithDom();
133 $pc = new ilPCInteractiveImage($page);
134 $pc->setMediaObject($this->getMediaObjectMock());
135 $pc->createAlias($page, "pg");
136 $pc->addContentPopup();
137 $page->addHierIDs();
138 $popups = $pc->getPopups();
139
140 $expected = [
141 0 => [
142 "title" => "",
143 "nr" => "1",
144 "pc_id" => "",
145 "hier_id" => "1_1"
146 ]
147 ];
148
149 $this->assertEquals(
150 $expected,
151 $popups
152 );
153 }
154
155 public function testSavePopups(): void
156 {
157 $page = $this->getEmptyPageWithDom();
158 $pc = new ilPCInteractiveImage($page);
159 $pc->setMediaObject($this->getMediaObjectMock());
160 $pc->createAlias($page, "pg");
161 $pc->addContentPopup();
162 $page->addHierIDs();
163 $popups = $pc->savePopups(
164 [
165 "1_1:" => "Test Title"
166 ]
167 );
168
169 $expected = [
170 0 => [
171 "title" => "Test Title",
172 "nr" => "1",
173 "pc_id" => "",
174 "hier_id" => "1_1"
175 ]
176 ];
177
178 $this->assertEquals(
179 $expected,
180 $pc->getPopups()
181 );
182 }
183
184 public function testDeletePopup(): void
185 {
186 $page = $this->getEmptyPageWithDom();
187 $pc = new ilPCInteractiveImage($page);
188 $pc->setMediaObject($this->getMediaObjectMock());
189 $pc->createAlias($page, "pg");
190 $pc->addContentPopup();
191 $pc->addContentPopup();
192 $page->addHierIDs();
193 $popups = $pc->savePopups(
194 [
195 "1_1:" => "Test Title 1",
196 "1_2:" => "Test Title 2"
197 ]
198 );
199 $pc->deletePopup("1_1", "");
200 $page->stripHierIDs();
201
202 $expected = <<<EOT
203<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><ContentPopup Title="Test Title 2" Nr="2"/></InteractiveImage></PageContent></PageObject>
204EOT;
205
206 $this->assertXmlEquals(
207 $expected,
208 $page->getXMLFromDom()
209 );
210 }
211
213 {
214 $pc = new ilPCInteractiveImage(
215 $page,
216 null,
217 $this->getObjectAdapterMock()
218 );
219 $pc->setMediaObject($this->getMediaObjectMock());
220 $pc->createAlias($page, "pg");
221 $page->addHierIDs();
222 $page->insertPCIds();
223 $pc->setHierId("1");
224 $pc->setPCId($page->getPCIdForHierId("1"));
225 $pc->setDomNode($pc->getDomNode());
226 return $pc;
227 }
228
229 public function testAddTriggerArea(): void
230 {
231 $page = $this->getEmptyPageWithDom();
232 $pc = $this->getInteractiveImageInPage($page);
233
234 $pc->addTriggerArea(
235 $pc->getStandardAliasItem(),
237 "20,20,200,200",
238 "Area Title"
239 );
240 $page->stripHierIDs();
241 $page->stripPCIDs();
242
243 $expected = <<<EOT
244<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/><MapArea Shape="Rect" Coords="20,20,200,200" Id="1"><ExtLink Href="#">Area Title</ExtLink></MapArea></MediaAliasItem><Trigger Type="Area" Title="Area Title" Nr="1" OverlayX="0" OverlayY="0" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200"/></InteractiveImage></PageContent></PageObject>
245EOT;
246
247 $this->assertXmlEquals(
248 $expected,
249 $page->getXMLFromDom()
250 );
251 }
252
253 public function testAddTriggerMarker(): void
254 {
255 $page = $this->getEmptyPageWithDom();
256 $pc = $this->getInteractiveImageInPage($page);
257
258 $pc->addTriggerMarker(
259 );
260 $page->stripHierIDs();
261 $page->stripPCIDs();
262
263 $expected = <<<EOT
264<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><Trigger Type="Marker" Nr="1" OverlayX="0" OverlayY="0" MarkerX="0" MarkerY="0" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200"/></InteractiveImage></PageContent></PageObject>
265EOT;
266
267 $this->assertXmlEquals(
268 $expected,
269 $page->getXMLFromDom()
270 );
271 }
272
273 public function testGetTriggerNodes(): void
274 {
275 $page = $this->getEmptyPageWithDom();
276 $pc = $this->getInteractiveImageInPage($page);
277 $pc->addTriggerMarker();
278 $page->stripPCIDs();
279 $nodes = $pc->getTriggerNodes("1", "");
280 $this->assertEquals(
281 "Trigger",
282 $nodes->item(0)->nodeName
283 );
284 }
285
286 public function testGetTriggers(): void
287 {
288 $page = $this->getEmptyPageWithDom();
289 $pc = $this->getInteractiveImageInPage($page);
290 $pc->addTriggerMarker();
291 $triggers = $pc->getTriggers();
292 $this->assertEquals(
293 "Marker",
294 $triggers[0]["Type"]
295 );
296 }
297
298 public function testDeleteTrigger(): void
299 {
300 $page = $this->getEmptyPageWithDom();
301 $pc = $this->getInteractiveImageInPage($page);
302
303 $pc->addTriggerArea(
304 $pc->getStandardAliasItem(),
306 "20,20,200,200",
307 "Area Title"
308 );
309 $ma = $pc->getStandardAliasItem();
310 $pc->deleteTrigger($ma, "1");
311
312 $page->stripHierIDs();
313 $page->stripPCIDs();
314
315 $expected = <<<EOT
316<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem></InteractiveImage></PageContent></PageObject>
317EOT;
318
319 $this->assertXmlEquals(
320 $expected,
321 $page->getXMLFromDom()
322 );
323 }
324
325 public function testSetOverlays(): void
326 {
327 $page = $this->getEmptyPageWithDom();
328 $pc = $this->getInteractiveImageInPage($page);
329
330 $pc->addTriggerArea(
331 $pc->getStandardAliasItem(),
333 "20,20,200,200",
334 "Area Title"
335 );
336 $pc->setTriggerOverlays([
337 "1" => "image1.jpg"
338 ]);
339
340 $page->stripHierIDs();
341 $page->stripPCIDs();
342
343 $expected = <<<EOT
344<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/><MapArea Shape="Rect" Coords="20,20,200,200" Id="1"><ExtLink Href="#">Area Title</ExtLink></MapArea></MediaAliasItem><Trigger Type="Area" Title="Area Title" Nr="1" OverlayX="0" OverlayY="0" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200" Overlay="image1.jpg"/></InteractiveImage></PageContent></PageObject>
345EOT;
346
347 $this->assertXmlEquals(
348 $expected,
349 $page->getXMLFromDom()
350 );
351 }
352
353 public function testSetTriggerOverlayPositions(): void
354 {
355 $page = $this->getEmptyPageWithDom();
356 $pc = $this->getInteractiveImageInPage($page);
357
358 $pc->addTriggerArea(
359 $pc->getStandardAliasItem(),
361 "20,20,200,200",
362 "Area Title"
363 );
364 $pc->setTriggerOverlayPositions([
365 "1" => "10,20"
366 ]);
367
368 $page->stripHierIDs();
369 $page->stripPCIDs();
370
371 $expected = <<<EOT
372<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/><MapArea Shape="Rect" Coords="20,20,200,200" Id="1"><ExtLink Href="#">Area Title</ExtLink></MapArea></MediaAliasItem><Trigger Type="Area" Title="Area Title" Nr="1" OverlayX="10" OverlayY="20" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200"/></InteractiveImage></PageContent></PageObject>
373EOT;
374
375 $this->assertXmlEquals(
376 $expected,
377 $page->getXMLFromDom()
378 );
379 }
380
381 public function testSetTriggerMarkerPositions(): void
382 {
383 $page = $this->getEmptyPageWithDom();
384 $pc = $this->getInteractiveImageInPage($page);
385
386 $pc->addTriggerMarker();
387 $pc->setTriggerMarkerPositions(
388 ["1" => "50,100"]
389 );
390
391 $page->stripHierIDs();
392 $page->stripPCIDs();
393
394 $expected = <<<EOT
395<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><Trigger Type="Marker" Nr="1" OverlayX="0" OverlayY="0" MarkerX="50" MarkerY="100" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200"/></InteractiveImage></PageContent></PageObject>
396EOT;
397
398 $this->assertXmlEquals(
399 $expected,
400 $page->getXMLFromDom()
401 );
402 }
403
404 public function testSetTriggerPopupPositions(): void
405 {
406 $page = $this->getEmptyPageWithDom();
407 $pc = $this->getInteractiveImageInPage($page);
408
409 $pc->addTriggerMarker();
410 $pc->setTriggerPopupPositions(
411 ["1" => "40,30"]
412 );
413
414 $page->stripHierIDs();
415 $page->stripPCIDs();
416
417 $expected = <<<EOT
418<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><Trigger Type="Marker" Nr="1" OverlayX="0" OverlayY="0" MarkerX="0" MarkerY="0" PopupX="40" PopupY="30" PopupWidth="150" PopupHeight="200"/></InteractiveImage></PageContent></PageObject>
419EOT;
420
421 $this->assertXmlEquals(
422 $expected,
423 $page->getXMLFromDom()
424 );
425 }
426
427 public function testSetTriggerPopupSize(): void
428 {
429 $page = $this->getEmptyPageWithDom();
430 $pc = $this->getInteractiveImageInPage($page);
431
432 $pc->addTriggerMarker();
433 $pc->setTriggerPopupSize(
434 ["1" => "220,330"]
435 );
436
437 $page->stripHierIDs();
438 $page->stripPCIDs();
439
440 $expected = <<<EOT
441<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><Trigger Type="Marker" Nr="1" OverlayX="0" OverlayY="0" MarkerX="0" MarkerY="0" PopupX="0" PopupY="0" PopupWidth="220" PopupHeight="330"/></InteractiveImage></PageContent></PageObject>
442EOT;
443
444 $this->assertXmlEquals(
445 $expected,
446 $page->getXMLFromDom()
447 );
448 }
449
450 public function testSetTriggerPopups(): void
451 {
452 $page = $this->getEmptyPageWithDom();
453 $pc = $this->getInteractiveImageInPage($page);
454
455 $pc->addTriggerMarker();
456 $pc->setTriggerPopups(
457 ["1" => "1"]
458 );
459
460 $page->stripHierIDs();
461 $page->stripPCIDs();
462
463 $expected = <<<EOT
464<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><Trigger Type="Marker" Nr="1" OverlayX="0" OverlayY="0" MarkerX="0" MarkerY="0" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200" PopupNr="1"/></InteractiveImage></PageContent></PageObject>
465EOT;
466
467 $this->assertXmlEquals(
468 $expected,
469 $page->getXMLFromDom()
470 );
471 }
472
473 public function testSetTriggerTitles(): void
474 {
475 $page = $this->getEmptyPageWithDom();
476 $pc = $this->getInteractiveImageInPage($page);
477
478 $pc->addTriggerMarker();
479 $pc->setTriggerTitles(
480 ["1" => "My Title"]
481 );
482
483 $page->stripHierIDs();
484 $page->stripPCIDs();
485
486 $expected = <<<EOT
487<PageObject><PageContent><InteractiveImage><MediaAlias OriginId="il__mob_0"/><MediaAliasItem Purpose="Standard"><Layout HorizontalAlign="Left"/></MediaAliasItem><Trigger Type="Marker" Nr="1" OverlayX="0" OverlayY="0" MarkerX="0" MarkerY="0" PopupX="0" PopupY="0" PopupWidth="150" PopupHeight="200" Title="My Title"/></InteractiveImage></PageContent></PageObject>
488EOT;
489
490 $this->assertXmlEquals(
491 $expected,
492 $page->getXMLFromDom()
493 );
494 }
495}
assertXmlEquals(string $expected_xml_as_string, string $html_xml_string)
getInteractiveImageInPage(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...
Class ilMediaItem Media Item, component of a media object (file or reference)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilPageObject Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.