ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
TileTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\Badge\test;
22
29use ILIAS\UI\Component\Button\Button as ButtonComponent;
30use ILIAS\UI\Component\Image\Image as ImageComponent;
31use ILIAS\UI\Component\Modal\Modal as ModalComponent;
32use PHPUnit\Framework\TestCase;
33use ilBadge;
34use ilCtrl;
35use ilLanguage;
37use PHPUnit\Framework\Attributes\DataProvider;
38
39class TileTest extends TestCase
40{
41 public function testConstruct(): void
42 {
43 $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
44 $parent = $this->getMockBuilder(BadgeParent::class)->disableOriginalConstructor()->getMock();
45 $modal = $this->getMockBuilder(Modal::class)->disableOriginalConstructor()->getMock();
46 $sign_file = static fn(string $x): string => '';
47 $format_date = static fn(int $x): string => '';
48
49 $this->assertInstanceOf(Tile::class, new Tile($container, $parent, $modal, $sign_file, $format_date));
50 }
51
52 #[DataProvider('provideAsVariants')]
53 public function testAs(string $method, array $expected_components): void
54 {
55 $signed_file = '/some-signed-file';
56 $badge_image_path = '/file-path';
57 $badge_image_name = 'Dummy image';
58 $badge_image_rid_name = '43242-324234-324234-234233';
59 $badge = $this->getMockBuilder(ilBadge::class)->disableOriginalConstructor()->getMock();
60 $modal_content = $this->getMockBuilder(ModalContent::class)->disableOriginalConstructor()->getMock();
61 $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
62 $parent = $this->getMockBuilder(BadgeParent::class)->disableOriginalConstructor()->getMock();
63 $modal = $this->getMockBuilder(Modal::class)->disableOriginalConstructor()->getMock();
64 $ui = $this->getMockBuilder(UIServices::class)->disableOriginalConstructor()->getMock();
65 $ctrl = $this->getMockBuilder(ilCtrl::class)->disableOriginalConstructor()->getMock();
66 $language = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock();
67 $resource_storage = $this->getMockBuilder(Services::class)->disableOriginalConstructor()->getMock();
68 $language->method('txt')->willReturnCallback(
69 static fn(string $lang_key) => 'Translated: ' . $lang_key
70 );
71 $container->method('ui')->willReturn($ui);
72 $container->method('ctrl')->willReturn($ctrl);
73 $container->method('language')->willReturn($language);
74 $container->method('resourceStorage')->willReturn($resource_storage);
75 $format_date = function (int $x): void {
76 throw new \RuntimeException('Should not be called.');
77 };
78 $sign_file = function (string $path) use ($signed_file, $badge_image_path): string {
79 return $signed_file;
80 };
81
82 $badge->method('getImagePath')->willReturn($badge_image_path);
83 $badge->method('getImage')->willReturn($badge_image_name);
84 $badge->method('getImageRid')->willReturn($badge_image_rid_name);
85 $modal_content->method('badge')->willReturn($badge);
86
87 $tile = new Tile($container, $parent, $modal, $sign_file, $format_date);
88
89 $components = $tile->$method($modal_content);
90
91 $this->assertCount(\count($expected_components), $components);
92 array_map($this->assertInstanceOf(...), $expected_components, $components);
93 }
94
95 public static function provideAsVariants(): array
96 {
97 return [
98 'Test asImage' => ['asImage', [ModalComponent::class, ImageComponent::class]],
99 'Test asTitle' => ['asTitle', [ModalComponent::class, ButtonComponent::class]],
100 'Test asTitleWithLeadingImage' => [
101 'asTitleWithLeadingImage',
102 [ModalComponent::class, ImageComponent::class, ButtonComponent::class]
103 ],
104 ];
105 }
106}
$components
testAs(string $method, array $expected_components)
Definition: TileTest.php:53
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
Provides fluid interface to RBAC services.
Definition: UIServices.php:25
Class ilCtrl provides processing control methods.
language handling
This describes commonalities between standard and primary buttons.
Definition: Button.php:34
This describes commonalities between the different modals.
Definition: Modal.php:35
$path
Definition: ltiservices.php:30
$container
@noRector
Definition: wac.php:37