From 0e03105426a00d7b6f8ff73b981140e34ce2cf0d Mon Sep 17 00:00:00 2001 From: dantleech Date: Wed, 2 Oct 2013 13:17:06 +0100 Subject: [PATCH 01/12] Adding voter web tests to MenuBundle --- .../Controller/CmiTestController.php | 31 +++++++ .../DataFixtures/PHPCR/LoadMenuData.php | 85 ++++++++++++++++--- .../app/Resources/views/index.html.twig | 1 + .../app/Resources/views/layout.html.twig | 18 ++++ .../views/tests/cmi/_sideMenu.html.twig | 3 + .../views/tests/cmi/default.html.twig | 6 ++ .../views/tests/cmi/requestContent.html.twig | 10 +++ .../cmi/requestContentVoterActive.html.twig | 10 +++ Tests/Resources/app/config/cmf_menu.yml | 1 + Tests/Resources/app/config/routing/test.yml | 11 +++ 10 files changed, 165 insertions(+), 11 deletions(-) create mode 100644 Tests/Resources/Controller/CmiTestController.php create mode 100644 Tests/Resources/app/Resources/views/tests/cmi/_sideMenu.html.twig create mode 100644 Tests/Resources/app/Resources/views/tests/cmi/default.html.twig create mode 100644 Tests/Resources/app/Resources/views/tests/cmi/requestContent.html.twig create mode 100644 Tests/Resources/app/Resources/views/tests/cmi/requestContentVoterActive.html.twig diff --git a/Tests/Resources/Controller/CmiTestController.php b/Tests/Resources/Controller/CmiTestController.php new file mode 100644 index 00000000..350c9fe8 --- /dev/null +++ b/Tests/Resources/Controller/CmiTestController.php @@ -0,0 +1,31 @@ +render('::tests/cmi/default.html.twig'); + } + + public function requestContentIdentityAction(Request $request) + { + $content = $request->get(DynamicRouter::CONTENT_KEY); + if (!$content) { + $content = $this->container->get('doctrine_phpcr.odm.document_manager')->find(null, '/test/content-1'); + $request->query->set(DynamicRouter::CONTENT_KEY, $content); + return $this->render('::tests/cmi/requestContentVoterActive.html.twig', array('content' => $content)); + } + return $this->render('::tests/cmi/requestContent.html.twig', array('content' => $content)); + } +} diff --git a/Tests/Resources/DataFixtures/PHPCR/LoadMenuData.php b/Tests/Resources/DataFixtures/PHPCR/LoadMenuData.php index f26ada8c..61e05008 100644 --- a/Tests/Resources/DataFixtures/PHPCR/LoadMenuData.php +++ b/Tests/Resources/DataFixtures/PHPCR/LoadMenuData.php @@ -19,9 +19,13 @@ use Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr\Menu; use Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document\Content; use Doctrine\ODM\PHPCR\Document\Generic; +use Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route; +use PHPCR\Util\NodeHelper; class LoadMenuData implements FixtureInterface, DependentFixtureInterface { + protected $root; + public function getDependencies() { return array( @@ -31,20 +35,29 @@ public function getDependencies() public function load(ObjectManager $manager) { - $content = new Content; - $content->setTitle('Content 1'); - $content->setId('/test/content-1'); + $this->root = $manager->find(null, '/test'); + + NodeHelper::createPath($manager->getPhpcrSession(), '/test/menus'); + NodeHelper::createPath($manager->getPhpcrSession(), '/test/routes/contents'); + $this->menuRoot = $manager->find(null, '/test/menus'); + $this->routeRoot = $manager->find(null, '/test/routes'); + + $this->loadMainMenu($manager); + $this->loadSideMenu($manager); - $root = $manager->find(null, '/test'); - $menuRoot = new Generic; - $menuRoot->setNodename('menus'); - $menuRoot->setParent($root); - $manager->persist($menuRoot); + $manager->flush(); + } + + protected function loadMainMenu($manager) + { + $content = new Content; + $content->setTitle('Menu Item Content 1'); + $content->setId('/test/content-menu-item-1'); $menu = new Menu; $menu->setName('test-menu'); $menu->setLabel('Test Menu'); - $menu->setParent($menuRoot); + $menu->setParent($this->menuRoot); $manager->persist($menu); $menuNode = new MenuNode; @@ -94,7 +107,7 @@ public function load(ObjectManager $manager) $menu = new Menu; $menu->setName('another-menu'); $menu->setLabel('Another Menu'); - $menu->setParent($menuRoot); + $menu->setParent($this->menuRoot); $manager->persist($menu); $menuNode = new MenuNode; @@ -113,6 +126,56 @@ public function load(ObjectManager $manager) $manager->persist($menuNode); $manager->persist($content); - $manager->flush(); + } + + protected function loadSideMenu($manager) + { + $content = new Content; + $content->setTitle('Content 1'); + $content->setId('/test/content-1'); + $manager->persist($content); + + $route = new Route(); + $route->setContent($content); + $route->setId('/test/routes/contents/content-1'); + $route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\CmiTestController::requestContentIdentityAction'); + $manager->persist($route); + + $content = new Content; + $content->setTitle('CMI Content 1'); + $content->setId('/test/cmi-content-1'); + $manager->persist($content); + + $menu = new Menu; + $menu->setName('side-menu'); + $menu->setLabel('Side Menu'); + $menu->setParent($this->menuRoot); + $manager->persist($menu); + + $menuNode = new MenuNode; + $menuNode->setParent($menu); + $menuNode->setLabel('Default Behavior'); + $menuNode->setName('default'); + $menuNode->setRoute('current_menu_item_default'); + $manager->persist($menuNode); + + $menuNode = new MenuNode; + $menuNode->setParent($menu); + $menuNode->setLabel('Request Content Identity Voter'); + $menuNode->setName('request-content-identity-voter'); + $menuNode->setContent($route); + $manager->persist($menuNode); + + $menuNode = new MenuNode; + $menuNode->setParent($menu); + $menuNode->setLabel('URI Prefix Voter'); + $menuNode->setName('uri-prefix-voter'); + $manager->persist($menuNode); + + $menuNode = new MenuNode; + $menuNode->setParent($menu); + $menuNode->setLabel('Request Parent Content Identity Voter'); + $menuNode->setName('request-parent-content-identity-voter'); + $manager->persist($menuNode); } } diff --git a/Tests/Resources/app/Resources/views/index.html.twig b/Tests/Resources/app/Resources/views/index.html.twig index a4e5fe9a..ee6b6d37 100644 --- a/Tests/Resources/app/Resources/views/index.html.twig +++ b/Tests/Resources/app/Resources/views/index.html.twig @@ -4,6 +4,7 @@

About

This test application is built into the MenuBundle. You can easily run diff --git a/Tests/Resources/app/Resources/views/layout.html.twig b/Tests/Resources/app/Resources/views/layout.html.twig index f0e45c64..af8b0d0f 100644 --- a/Tests/Resources/app/Resources/views/layout.html.twig +++ b/Tests/Resources/app/Resources/views/layout.html.twig @@ -1,6 +1,24 @@ MenuBundle Test Application +