diff --git a/src/Carrooi/Menu/IMenuItem.php b/src/Carrooi/Menu/IMenuItem.php index ee507af..e84681f 100644 --- a/src/Carrooi/Menu/IMenuItem.php +++ b/src/Carrooi/Menu/IMenuItem.php @@ -41,12 +41,18 @@ public function getRealLink(): string; public function getRealAbsoluteLink(): string; + public function hasData(string $name): bool; + + public function getData(string $type = null, $default = null); public function setData(array $data): void; + public function addData(string $name, $value): void; + + public function isVisibleOnMenu(): bool; diff --git a/src/Carrooi/Menu/MenuItem.php b/src/Carrooi/Menu/MenuItem.php index 4f0291a..34ce721 100644 --- a/src/Carrooi/Menu/MenuItem.php +++ b/src/Carrooi/Menu/MenuItem.php @@ -148,13 +148,19 @@ public function getRealAbsoluteLink(): string } + public function hasData(string $name): bool + { + return array_key_exists($name, $this->data); + } + + public function getData(string $name = null, $default = null) { if ($name === null) { return $this->data; } - if (!array_key_exists($name, $this->data)) { + if (!$this->hasData($name)) { return $default; } @@ -168,6 +174,12 @@ public function setData(array $data): void } + public function addData(string $name, $value): void + { + $this->data[$name] = $value; + } + + public function isVisibleOnMenu(): bool { return $this->visibility['menu']; diff --git a/tests/CarrooiTests/Menu/MenuItemTest.phpt b/tests/CarrooiTests/Menu/MenuItemTest.phpt index 9c97536..aa6f3cf 100644 --- a/tests/CarrooiTests/Menu/MenuItemTest.phpt +++ b/tests/CarrooiTests/Menu/MenuItemTest.phpt @@ -271,6 +271,23 @@ final class MenuItemTest extends TestCase } + public function testAddData(): void + { + $linkGenerator = $this->createMockLinkGenerator(); + $translator = $this->createMockTranslator(); + $authorizator = $this->createMockAuthorizator(); + $application = $this->createMockApplication(); + $request = $this->createMockHttpRequest(); + $itemFactory = $this->createMockMenuItemFactory(); + + $item = new MenuItem($linkGenerator, $translator, $authorizator, $application, $request, $itemFactory, 'item'); + $item->addData('test', 'data'); + + Assert::true($item->hasData('test')); + Assert::equal('data', $item->getData('test')); + } + + public function testVisibility(): void { $linkGenerator = $this->createMockLinkGenerator();