ILIAS  trunk Revision v12.0_alpha-1227-g7ff6d300864
FSLoaderTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
32use PHPUnit\Framework\Attributes\DataProvider;
33use PHPUnit\Framework\TestCase;
34use PHPUnit\Framework\MockObject\MockObject;
35
36class FSLoaderTest extends TestCase
37{
44
46
47 protected function setUp(): void
48 {
49 $this->default_renderer_factory = $this->createMock(RendererFactory::class);
50 $this->button_renderer_factory = $this->createMock(RendererFactory::class);
51 $this->field_renderer_factory = $this->createMock(RendererFactory::class);
52 $this->message_box_renderer_factory = $this->createMock(RendererFactory::class);
53 $this->form_renderer_factory = $this->createMock(RendererFactory::class);
54 $this->menu_renderer_factory = $this->createMock(RendererFactory::class);
55
56 $this->fs_loader = new FSLoader(
57 $this->default_renderer_factory,
58 $this->button_renderer_factory,
59 $this->field_renderer_factory,
60 $this->message_box_renderer_factory,
61 $this->form_renderer_factory,
62 $this->menu_renderer_factory,
63 );
64
65 parent::setUp();
66 }
67
68 public function testGetRendererUsesRendererFactory(): void
69 {
70 $loader = $this->getMockBuilder(ILIAS\UI\Implementation\Render\FSLoader::class)
71 ->onlyMethods(["getRendererFactoryFor", "getContextNames"])
72 ->disableOriginalConstructor()
73 ->getMock();
74 $factory = $this->getMockBuilder(ILIAS\UI\Implementation\Render\RendererFactory::class)
75 ->getMock();
76
77 $rendered_component = $this->createMock(ILIAS\UI\Component\Component::class);
78
79 $component1 = $this->createMock(ILIAS\UI\Component\Component::class);
80 $component2 = $this->createMock(ILIAS\UI\Component\Component::class);
81 $component_name1 = "COMPONENT 1";
82 $component_name2 = "COMPONENT 2";
83
84 $loader
85 ->expects($this->once())
86 ->method("getContextNames")
87 ->with([$component1, $component2])
88 ->willReturn([$component_name1, $component_name2]);
89
90 $loader
91 ->expects($this->once())
92 ->method("getRendererFactoryFor")
93 ->with($rendered_component)
94 ->willReturn($factory);
95
96 $renderer = $this->createMock(ComponentRenderer::class);
97 $factory
98 ->expects($this->once())
99 ->method("getRendererInContext")
100 ->with($rendered_component, [$component_name1, $component_name2])
101 ->willReturn($renderer);
102
103 $renderer2 = $loader->getRendererFor($rendered_component, [$component1, $component2]);
104 $this->assertEquals($renderer, $renderer2);
105 }
106
108 {
109 $component_mock = $this->createMock(FormInput::class);
110 $factory = $this->fs_loader->getRendererFactoryFor($component_mock);
111 $this->assertSame($factory, $this->field_renderer_factory);
112 }
113
115 {
116 $component_mock = $this->createMock(MessageBox::class);
117 $factory = $this->fs_loader->getRendererFactoryFor($component_mock);
118 $this->assertSame($factory, $this->message_box_renderer_factory);
119 }
120
121 public function testGetRendererFactoryForForm(): void
122 {
123 $component_mock = $this->createMock(Form::class);
124 $factory = $this->fs_loader->getRendererFactoryFor($component_mock);
125 $this->assertSame($factory, $this->form_renderer_factory);
126 }
127
128 public function testGetRendererFactoryForMenu(): void
129 {
130 $component_mock = $this->createMock(Menu::class);
131 $factory = $this->fs_loader->getRendererFactoryFor($component_mock);
132 $this->assertSame($factory, $this->menu_renderer_factory);
133 }
134
135 public function testGetRendererFactoryForButton(): void
136 {
137 $component_mock = $this->createMock(Button::class);
138 $factory = $this->fs_loader->getRendererFactoryFor($component_mock);
139 $this->assertSame($factory, $this->button_renderer_factory);
140 }
141
142 public function testGetRendererFactoryForOther(): void
143 {
144 $component_mock = $this->createMock(Component::class);
145 $factory = $this->fs_loader->getRendererFactoryFor($component_mock);
146 $this->assertSame($factory, $this->default_renderer_factory);
147 }
148}
$renderer
testGetRendererFactoryForFormInput()
FSLoader $fs_loader
testGetRendererFactoryForButton()
RendererFactory &MockObject $button_renderer_factory
RendererFactory &MockObject $default_renderer_factory
RendererFactory &MockObject $menu_renderer_factory
testGetRendererFactoryForOther()
RendererFactory &MockObject $message_box_renderer_factory
testGetRendererFactoryForMenu()
testGetRendererFactoryForMessageBox()
testGetRendererFactoryForForm()
RendererFactory &MockObject $field_renderer_factory
RendererFactory &MockObject $form_renderer_factory
testGetRendererUsesRendererFactory()
This implements commonalities between standard and primary buttons.
Definition: Button.php:35
This implements commonalities between all forms.
Definition: Form.php:35
Loads renderers for components from the file system.
Definition: FSLoader.php:44
A component is the most general form of an entity in the UI.
Definition: Component.php:28
This describes inputs that can be used in forms.
Definition: FormInput.php:33
An entity that renders components to a string output.
This is the interface that components should use if they want to load specific renderers.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.