Skip to content

Commit

Permalink
Added shortcut methods for working with menu item data
Browse files Browse the repository at this point in the history
  • Loading branch information
pavelkovar authored and davidkudera committed Aug 11, 2017
1 parent 2324df0 commit 4fa4d6a
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/Carrooi/Menu/IMenuItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;


Expand Down
14 changes: 13 additions & 1 deletion src/Carrooi/Menu/MenuItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand All @@ -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'];
Expand Down
17 changes: 17 additions & 0 deletions tests/CarrooiTests/Menu/MenuItemTest.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit 4fa4d6a

Please sign in to comment.