46 : void
47 {
48 $mode = $this->getMockBuilder(Mode::class)->disableOriginalConstructor()->getMock();
49 $mode->expects($this->once())->method('withActive')->with('tile_view')->willReturn($mode);
50
51 $view_control = $this->getMockBuilder(ViewControl::class)->disableOriginalConstructor()->getMock();
52 $view_control->expects($this->once())->method('mode')->with([
53 'tile_view' => 'list URL',
54 'table_view' => 'manage URL',
55 ])->willReturn($mode);
56
57 $additional_component = [];
58 $consecutive_expected = [$mode];
59 if ($additional) {
60 $mock = $this->getMockBuilder(Component::class)->getMock();
61 $additional_component[] = [$mock];
62 $consecutive_expected[] = $mock;
63 }
64
65 $toolbar = $this->getMockBuilder(ilToolbarGUI::class)->disableOriginalConstructor()->getMock();
66 $toolbar
67 ->expects($this->exactly($additional + 1))
68 ->method('addStickyItem')
69 ->willReturnCallback(
70 function ($component) use (&$consecutive_expected) {
71 $expected = array_shift($consecutive_expected);
72 $this->assertEquals($expected, $component);
73 }
74 );
75
76
77 $factory = $this->getMockBuilder(UI::class)->disableOriginalConstructor()->getMock();
78 $factory->expects($this->once())->method('viewControl')->willReturn($view_control);
79
80 $ui = $this->getMockBuilder(UIServices::class)->disableOriginalConstructor()->getMock();
81 $ui->method('factory')->willReturn($factory);
82
83 $consecutive = [
84 ['Some class.', 'listBadges', 'list URL'],
85 ['Some class.', 'manageBadges', 'manage URL'],
86 ];
87 $ctrl = $this->getMockBuilder(ilCtrl::class)->disableOriginalConstructor()->getMock();
88 $ctrl
89 ->expects($this->exactly(2))
90 ->method('getLinkTargetByClass')
91 ->willReturnCallback(
92 function ($class, $cmd) use (&$consecutive) {
93 list($expected_class, $expected_cmd, $ret) = array_shift($consecutive);
94 $this->assertEquals($class, $expected_class);
95 $this->assertEquals($cmd, $expected_cmd);
96 return $ret;
97 }
98 );
99
100 $language = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock();
101 $language->method('txt')->willReturnCallback(static fn(string $name): string => $name);
102
103 $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
104 $container->expects($this->once())->method(
'toolbar')->willReturn($toolbar);
106 $container->method(
'ctrl')->willReturn($ctrl);
107 $container->method(
'language')->willReturn($language);
108
109 $head =
new PresentationHeader(
$container,
'Some class.');
110 $head->show('tile_view', $additional_component[0][0] ?? null);
111 }