diff --git a/Doctrine/Phpcr/MenuBlock.php b/Doctrine/Phpcr/MenuBlock.php index bed2b1df..57e53a12 100644 --- a/Doctrine/Phpcr/MenuBlock.php +++ b/Doctrine/Phpcr/MenuBlock.php @@ -49,13 +49,17 @@ public function getMenuNode() * * Set to null to remove the reference. * - * @param NodeInterface $menuNode A mapped menu node. + * @param NodeInterface|null $menuNode A mapped menu node. * * @return MenuBlock $this */ - public function setMenuNode(NodeInterface $menuNode = null) + public function setMenuNode($menuNode = null) { - $this->menuNode = $menuNode; + if (null === $menuNode || $menuNode instanceof NodeInterface) { + $this->menuNode = $menuNode; + } else { + throw new \InvalidArgumentException('$menuNode must be an instane of NodeInterface'); + } return $this; } diff --git a/Tests/Functional/Block/MenuBlockServiceTest.php b/Tests/Functional/Block/MenuBlockServiceTest.php index dd8a9ab5..494afbf0 100644 --- a/Tests/Functional/Block/MenuBlockServiceTest.php +++ b/Tests/Functional/Block/MenuBlockServiceTest.php @@ -66,4 +66,16 @@ public function testExecutionOfEnabledBlock() $menuBlockService = new MenuBlockService('test-service', $templatingMock, $blockRendererMock, $blockContextManagerMock); $menuBlockService->execute($menuBlockContext); } + + public function testSetMenuNode() + { + $menuBlock = new MenuBlock(); + $this->assertAttributeEmpty('menuNode', $menuBlock); + + $menuBlock->setMenuNode($this->getMock('Knp\Menu\NodeInterface')); + $this->assertAttributeInstanceOf('Knp\Menu\NodeInterface', 'menuNode', $menuBlock); + + $menuBlock->setMenuNode(null); + $this->assertAttributeSame(null, 'menuNode', $menuBlock); + } }