ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilWebResourceItemsContainerTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21use PHPUnit\Framework\TestCase;
22use PHPUnit\Framework\MockObject\MockObject;
23
28class ilWebResourceItemsContainerTest extends TestCase
29{
33 protected function createItemMock(
34 bool $internal,
35 string $title,
36 int $link_id
37 ): MockObject {
38 if ($internal) {
39 $class = ilWebLinkItemInternal::class;
40 } else {
41 $class = ilWebLinkItemExternal::class;
42 }
43
44 $item = $this->getMockBuilder($class)
45 ->disableOriginalConstructor()
46 ->onlyMethods(['getTitle','getLinkId'])
47 ->getMock();
48
49 $item->method('getTitle')->willReturn($title);
50 $item->method('getLinkId')->willReturn($link_id);
51
52 return $item;
53 }
54
55 public function testSortByTitle(): void
56 {
57 $item1 = $this->createItemMock(false, 'c', 1);
58 $item2 = $this->createItemMock(true, 'b', 2);
59 $item3 = $this->createItemMock(true, 'a', 3);
60 $item4 = $this->createItemMock(false, 'e', 4);
61 $item5 = $this->createItemMock(false, 'd', 5);
62
63 $container = $this->getMockBuilder(ilWebLinkItemsContainer::class)
64 ->setConstructorArgs([
65 13,
66 [$item1, $item2, $item3, $item4, $item5]
67 ])
68 ->onlyMethods(['lookupSortMode', 'lookupManualPositions', 'sortArray'])
69 ->getMock();
70 $container->expects($this->once())
71 ->method('lookupSortMode')
72 ->with(13)
73 ->willReturn(ilContainer::SORT_TITLE);
74 $container->expects($this->never())
75 ->method('lookupManualPositions');
76 $container->expects($this->once())
77 ->method('sortArray')
78 ->willReturn(
79 [
80 3 => ['title' => 'a', 'item' => $item3],
81 2 => ['title' => 'b', 'item' => $item2],
82 1 => ['title' => 'c', 'item' => $item1],
83 5 => ['title' => 'd', 'item' => $item5],
84 4 => ['title' => 'e', 'item' => $item4]
85 ]
86 );
87
88 $container_after_sorting = $container->sort();
89 $this->assertSame($container, $container_after_sorting);
90 $this->assertSame(
91 [$item3, $item2, $item1, $item5, $item4],
92 $container_after_sorting->getItems()
93 );
94 }
95
96 public function testSortManual(): void
97 {
98 $item1 = $this->createItemMock(false, 'c', 1);
99 $item2 = $this->createItemMock(true, 'b', 2);
100 $item3 = $this->createItemMock(true, 'a', 3);
101 $item4 = $this->createItemMock(false, 'e', 4);
102 $item5 = $this->createItemMock(false, 'd', 5);
103
104 $container = $this->getMockBuilder(ilWebLinkItemsContainer::class)
105 ->setConstructorArgs([
106 13,
107 [$item1, $item2, $item3, $item4, $item5]
108 ])
109 ->onlyMethods(['lookupSortMode', 'lookupManualPositions', 'sortArray'])
110 ->getMock();
111 $container->expects($this->once())
112 ->method('lookupSortMode')
113 ->with(13)
114 ->willReturn(ilContainer::SORT_MANUAL);
115 $container->expects($this->once())
116 ->method('lookupManualPositions')
117 ->with(13)
118 ->willReturn([1 => 10, 2 => 30, 3 => 20]);
119 $container->expects($this->exactly(2))
120 ->method('sortArray')
121 ->willReturnOnConsecutiveCalls(
122 [
123 1 => ['position' => 10, 'item' => $item1],
124 3 => ['position' => 20, 'item' => $item3],
125 2 => ['position' => 30, 'item' => $item2]
126 ],
127 [
128 5 => ['title' => 'd', 'item' => $item5],
129 4 => ['title' => 'e', 'item' => $item4]
130 ]
131 );
132
133 $container_after_sorting = $container->sort();
134 $this->assertSame($container, $container_after_sorting);
135 $this->assertSame(
136 [$item1, $item3, $item2, $item5, $item4],
137 $container_after_sorting->getItems()
138 );
139 }
140}
Unit tests for ilWebLinkItemsContainer.
createItemMock(bool $internal, string $title, int $link_id)
if(!file_exists('../ilias.ini.php'))
$container
@noRector
Definition: wac.php:37