Skip to content
This repository was archived by the owner on Sep 16, 2021. It is now read-only.

Commit b8e0a6a

Browse files
dantleechdbu
authored andcommitted
Added test app scenario for menu parent content voter
1 parent 3ba369b commit b8e0a6a

File tree

8 files changed

+107
-2
lines changed

8 files changed

+107
-2
lines changed

Tests/Resources/Controller/CmiTestController.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313
*/
1414
class CmiTestController extends Controller
1515
{
16+
protected function getDm()
17+
{
18+
return $this->container->get('doctrine_phpcr.odm.document_manager');
19+
}
20+
1621
public function defaultAction(Request $request)
1722
{
1823
return $this->render('::tests/cmi/default.html.twig');
@@ -22,11 +27,28 @@ public function requestContentIdentityAction(Request $request)
2227
{
2328
$content = $request->get(DynamicRouter::CONTENT_KEY);
2429
if (!$content) {
25-
$content = $this->container->get('doctrine_phpcr.odm.document_manager')->find(null, '/test/content-1');
30+
$content = $this->getDm()->find(null, '/test/content-1');
2631
$request->attributes->set(DynamicRouter::CONTENT_KEY, $content);
2732

2833
return $this->render('::tests/cmi/requestContentVoterActive.html.twig', array('content' => $content));
2934
}
35+
36+
return $this->render('::tests/cmi/requestContent.html.twig', array('content' => $content));
37+
}
38+
39+
public function blogAction(Request $request)
40+
{
41+
return $this->render('::tests/cmi/blog.html.twig');
42+
}
43+
44+
public function postAction(Request $request)
45+
{
46+
$content = $request->get(DynamicRouter::CONTENT_KEY);
47+
return $this->render('::tests/cmi/post.html.twig', array('content' => $content));
48+
}
49+
50+
public function urlPrefixAction(Request $request)
51+
{
3052
return $this->render('::tests/cmi/requestContent.html.twig', array('content' => $content));
3153
}
3254
}

Tests/Resources/DataFixtures/PHPCR/LoadMenuData.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr\MenuNode;
1919
use Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr\Menu;
2020
use Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document\Content;
21+
use Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document\Post;
2122
use Doctrine\ODM\PHPCR\Document\Generic;
2223
use Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route;
2324
use PHPCR\Util\NodeHelper;
@@ -130,6 +131,7 @@ protected function loadMainMenu($manager)
130131

131132
protected function loadSideMenu($manager)
132133
{
134+
// test content
133135
$content = new Content;
134136
$content->setTitle('Content 1');
135137
$content->setId('/test/content-1');
@@ -141,6 +143,31 @@ protected function loadSideMenu($manager)
141143
$route->setContent($content);
142144
$manager->persist($route);
143145

146+
// test blog
147+
$blog = new Content;
148+
$blog->setTitle('Blog');
149+
$blog->setId('/test/blog-1');
150+
$manager->persist($blog);
151+
152+
$route = new Route();
153+
$route->setId('/test/routes/blog');
154+
$route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\CmiTestController::blogAction');
155+
$route->setContent($blog);
156+
$manager->persist($route);
157+
158+
// test blog post
159+
$post = new Post;
160+
$post->setTitle('My Post');
161+
$post->setId('/test/blog-1/my-post');
162+
$manager->persist($post);
163+
164+
$route = new Route();
165+
$route->setId('/test/routes/blog/my-post');
166+
$route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\CmiTestController::postAction');
167+
$route->setContent($post);
168+
$manager->persist($route);
169+
170+
// menu items
144171
$menu = new Menu;
145172
$menu->setName('side-menu');
146173
$menu->setLabel('Side Menu');
@@ -171,6 +198,7 @@ protected function loadSideMenu($manager)
171198
$menuNode->setParent($menu);
172199
$menuNode->setLabel('Request Parent Content Identity Voter');
173200
$menuNode->setName('request-parent-content-identity-voter');
201+
$menuNode->setContent($blog);
174202
$manager->persist($menuNode);
175203
}
176204
}

Tests/Resources/Document/Content.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ class Content implements MenuNodeReferrersInterface, RouteReferrersReadInterface
3636
*/
3737
protected $title;
3838

39+
/**
40+
* @PHPCRODM\ParentDocument()
41+
*/
42+
protected $parent;
43+
3944
/**
4045
* @PHPCRODM\Referrers(
4146
* referringDocument="Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr\MenuNode",
@@ -106,4 +111,9 @@ public function getRoutes()
106111
}
107112
return $this->routes;
108113
}
114+
115+
public function getParent()
116+
{
117+
return $this->parent;
118+
}
109119
}

Tests/Resources/Document/Post.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document;
4+
5+
use Doctrine\Common\Collections\ArrayCollection;
6+
use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCRODM;
7+
8+
use Knp\Menu\NodeInterface;
9+
10+
use Symfony\Component\Routing\Route;
11+
use Symfony\Cmf\Component\Routing\RouteReferrersReadInterface;
12+
use Symfony\Cmf\Bundle\MenuBundle\Model\MenuNodeReferrersInterface;
13+
14+
/**
15+
* @PHPCRODM\Document(referenceable=true)
16+
*/
17+
class Post extends Content
18+
{
19+
}

Tests/Resources/app/AppKernel.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function configure()
2121
public function registerContainerConfiguration(LoaderInterface $loader)
2222
{
2323
$loader->load(__DIR__.'/config/config.php');
24-
$loader->load(__DIR__.'/config/admin-test.xml');
24+
$loader->load(__DIR__.'/config/test-services.xml');
2525
}
2626

2727
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{% extends "::layout.html.twig" %}
2+
{% block content %}
3+
{% include "::tests/cmi/_sideMenu.html.twig" %}
4+
<p>
5+
This is the blog page. Click <a href="{{ path('/test/routes/blog/my-post') }}">To view the blog post.</a>.
6+
</p>
7+
{% endblock %}
8+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{% extends "::layout.html.twig" %}
2+
{% block content %}
3+
{% include "::tests/cmi/_sideMenu.html.twig" %}
4+
<p>
5+
This is the blog post page. The "Request Parent Content Identity Voter" menu item should now be highlighted. Click <a href="{{ path('/test/routes/blog') }}">here</a> to return to the blog page.
6+
</p>
7+
{% endblock %}
8+
9+

Tests/Resources/app/config/admin-test.xml renamed to Tests/Resources/app/config/test-services.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@
1919

2020
</service>
2121

22+
<service id="cmf_menu_test.menu_voter.parent"
23+
class="Symfony\Cmf\Bundle\MenuBundle\Voter\RequestParentContentIdentityVoter">
24+
<argument>contentDocument</argument>
25+
<argument>Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document\Post</argument>
26+
<tag name="cmf_menu.voter"/>
27+
<tag name="cmf_request_aware"/>
28+
</service>
29+
30+
2231
</services>
2332

2433
</container>

0 commit comments

Comments
 (0)