19 declare(strict_types=1);
53 $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
54 $parent = $this->getMockBuilder(BadgeParent::class)->disableOriginalConstructor()->getMock();
55 $modal = $this->getMockBuilder(Modal::class)->disableOriginalConstructor()->getMock();
56 $sign_file =
static fn(
string $x):
string =>
'';
57 $format_date =
static fn(
int $x):
string =>
'';
59 $this->assertInstanceOf(Tile::class,
new Tile(
$container, $parent, $modal, $sign_file, $format_date));
64 $modal_response = [
'foo'];
65 $gui_class_name =
'Im a class.';
66 $signed_file =
'/some-signed-file';
67 $remove_text =
'Translated: badge_remove_from_profile';
70 $badge_title =
'Badge title';
71 $badge_image_path =
'/file-path';
72 $badge_image_name =
'Dummy image';
74 $badge = $this->getMockBuilder(ilBadge::class)->disableOriginalConstructor()->getMock();
75 $assignment = $this->getMockBuilder(ilBadgeAssignment::class)->disableOriginalConstructor()->getMock();
76 $parent_component = $this->getMockBuilder(Component::class)->getMock();
77 $standard_button = $this->getMockBuilder(StandardButton::class)->disableOriginalConstructor()->getMock();
78 $modified_card = $this->getMockBuilder(StandardCard::class)->disableOriginalConstructor()->getMock();
79 $standard_card = $this->getMockBuilder(StandardCard::class)->disableOriginalConstructor()->getMock();
80 $card = $this->getMockBuilder(Card::class)->disableOriginalConstructor()->getMock();
81 $card_page = $this->getMockBuilder(LightboxCardPage::class)->disableOriginalConstructor()->getMock();
82 $lightbox = $this->getMockBuilder(Lightbox::class)->disableOriginalConstructor()->getMock();
83 $ui_modal = $this->getMockBuilder(UIModal::class)->disableOriginalConstructor()->getMock();
84 $button = $this->getMockBuilder(Button::class)->disableOriginalConstructor()->getMock();
85 $image_component = $this->getMockBuilder(ImageComponent::class)->disableOriginalConstructor()->getMock();
86 $image = $this->getMockBuilder(Image::class)->disableOriginalConstructor()->getMock();
87 $factory = $this->getMockBuilder(UI::class)->disableOriginalConstructor()->getMock();
88 $ui = $this->getMockBuilder(UIServices::class)->disableOriginalConstructor()->getMock();
89 $ctrl = $this->getMockBuilder(ilCtrl::class)->disableOriginalConstructor()->getMock();
90 $language = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock();
91 $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
92 $parent = $this->getMockBuilder(BadgeParent::class)->disableOriginalConstructor()->getMock();
93 $modal = $this->getMockBuilder(Modal::class)->disableOriginalConstructor()->getMock();
94 $format_date = fn(
int $x):
string =>
'Dummy';
95 $sign_file =
function (
string $path) use ($signed_file, $badge_image_path):
string {
96 $this->assertSame($badge_image_path,
$path);
100 $badge->method(
'getParentMeta')->willReturn([
'type' =>
'crs']);
101 $badge->method(
'getId')->willReturn($badge_id);
102 $badge->method(
'getTitle')->willReturn($badge_title);
103 $badge->method(
'getImagePath')->willReturn($badge_image_path);
104 $badge->method(
'getImage')->willReturn($badge_image_name);
106 $assignment->method(
'getPosition')->willReturn(8);
108 $modified_card->expects(self::once())->method(
'withSections')->with([$parent_component, $standard_button])->willReturn($modified_card);
109 $modified_card->expects(self::once())->method(
'withImage')->willReturn($modified_card);
110 $modified_card->expects(self::once())->method(
'withTitleAction')->willReturn($modified_card);
112 $standard_card->expects(self::once())->method(
'withHiddenSections')->with($modal_response)->willReturn($modified_card);
114 $card->expects(self::once())->method(
'standard')->willReturn($standard_card);
116 $ui_modal->expects(self::once())->method(
'lightbox')->with($card_page)->willReturn($lightbox);
117 $ui_modal->expects(self::once())->method(
'lightBoxCardPage')->with($standard_card)->willReturn($card_page);
119 $button->expects(self::once())->method(
'standard')->with($remove_text,
$url)->willReturn($standard_button);
121 $image_component->expects(self::once())->method(
'withAction')->willReturn($image_component);
123 $image->expects(self::once())->method(
'responsive')->with($signed_file, $badge_image_name)->willReturn($image_component);
125 $factory->method(
'card')->willReturn($card);
126 $factory->method(
'modal')->willReturn($ui_modal);
127 $factory->method(
'button')->willReturn($button);
128 $factory->method(
'image')->willReturn($image);
130 $ui->method(
'factory')->willReturn($factory);
132 $ctrl->expects(self::once())->method(
'getLinkTargetByClass')->with($gui_class_name,
'deactivateInCard')->willReturn(
$url);
133 $ctrl->expects(self::exactly(2))->method(
'setParameterByClass')->withConsecutive(
134 [$gui_class_name,
'badge_id', (
string) $badge_id],
135 [$gui_class_name,
'badge_id',
'']
138 $language->method(
'txt')->willReturnCallback(
139 static fn(
string $lang_key) =>
'Translated: ' . $lang_key
143 $container->method(
'ctrl')->willReturn($ctrl);
144 $container->method(
'language')->willReturn($language);
146 $parent->expects(self::once())->method(
'asComponent')->with($badge)->willReturn($parent_component);
148 $modal->expects(self::once())->method(
'components')->willReturn($modal_response);
150 $tile =
new Tile(
$container, $parent, $modal, $sign_file, $format_date);
152 $card_and_modal = $tile->inDeck($badge, $assignment, $gui_class_name);
154 $this->assertSame($modified_card, $card_and_modal[
'card']);
155 $this->assertSame($lightbox, $card_and_modal[
'modal']);
161 public function testAs(
string $method, array $expected_components): void
163 $signed_file =
'/some-signed-file';
164 $badge_image_path =
'/file-path';
165 $badge_image_name =
'Dummy image';
167 $badge = $this->getMockBuilder(ilBadge::class)->disableOriginalConstructor()->getMock();
168 $modal_content = $this->getMockBuilder(ModalContent::class)->disableOriginalConstructor()->getMock();
169 $container = $this->getMockBuilder(Container::class)->disableOriginalConstructor()->getMock();
170 $parent = $this->getMockBuilder(BadgeParent::class)->disableOriginalConstructor()->getMock();
171 $modal = $this->getMockBuilder(Modal::class)->disableOriginalConstructor()->getMock();
172 $format_date =
function (
int $x):
void {
173 throw new Exception(
'Should not be called.');
175 $sign_file =
function (
string $path) use ($signed_file, $badge_image_path):
string {
176 $this->assertSame($badge_image_path,
$path);
180 $badge->method(
'getImagePath')->willReturn($badge_image_path);
181 $badge->method(
'getImage')->willReturn($badge_image_name);
183 $modal_content->method(
'badge')->willReturn($badge);
185 $tile =
new Tile(
$container, $parent, $modal, $sign_file, $format_date);
187 $components = $tile->$method($modal_content);
189 $this->assertSame(count($expected_components), count($components));
190 array_map($this->assertInstanceOf(...), $expected_components, $components);
196 'Test asImage.' => [
'asImage', [ModalComponent::class, ImageComponent::class]],
197 'Test asTitle' => [
'asTitle', [ModalComponent::class, ImageComponent::class, ButtonComponent::class]],
This is how the factory for UI elements looks.
This describes a standard Card.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
testAs(string $method, array $expected_components)
provideAsVariants
This is how the factory for UI elements looks.