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

Commit 3d4ec00

Browse files
committed
Refactor testing (improv. cc and reduce execution time)
1 parent ee6ace8 commit 3d4ec00

30 files changed

+369
-576
lines changed

Tests/Functional/Doctrine/Phpcr/MenuNodeTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class MenuNodeTest extends BaseTestCase
3232
public function setUp()
3333
{
3434
$this->db('PHPCR')->createTestNode();
35+
3536
$this->dm = $this->db('PHPCR')->getOm();
3637
$this->rootDocument = $this->dm->find(null, '/test');
3738

Tests/Functional/RenderingTest.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony CMF package.
5+
*
6+
* (c) 2011-2015 Symfony CMF
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Cmf\Bundle\MenuBundle\Tests\Functional;
13+
14+
use Symfony\Cmf\Component\Testing\Functional\BaseTestCase;
15+
16+
class RenderingTest extends BaseTestCase
17+
{
18+
protected function setUp()
19+
{
20+
$this->db('PHPCR')->loadFixtures(array(
21+
'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\DataFixtures\PHPCR\LoadMenuData',
22+
));
23+
}
24+
25+
public function testWithAutomaticLinkType()
26+
{
27+
$template = $this->getContainer()->get('twig')->createTemplate('{{ knp_menu_render("test-menu") }}');
28+
$dom = new \DOMDocument();
29+
$dom->loadXml($template->render(array()));
30+
31+
$items = array(
32+
'item-1' => null,
33+
'This node has a URI' => 'http://www.example.com',
34+
'This node has content' => '/content-1',
35+
'This node has an assigned route' => '/link_test_route',
36+
'This node has an assigned route with parameters' => '/link_test_route/hello/foo/bar',
37+
'item-3' => null,
38+
);
39+
40+
$this->assertMenu($items, $dom);
41+
}
42+
43+
public function testWithExplicitLinkType()
44+
{
45+
$template = $this->getContainer()->get('twig')->createTemplate('{{ knp_menu_render("another-menu") }}');
46+
$dom = new \DOMDocument();
47+
$dom->loadXml($template->render(array()));
48+
49+
$items = array(
50+
'This node has uri, route and content set. but linkType is set to route' => '/link_test_route',
51+
'item-2' => null,
52+
);
53+
54+
$this->assertMenu($items, $dom);
55+
}
56+
57+
protected function assertMenu($expectedItems, \DOMDocument $menu)
58+
{
59+
$xpath = new \DOMXpath($menu);
60+
$menuItems = array();
61+
foreach ($xpath->query('//ul/li/*[self::span or self::a]') as $menuItem) {
62+
$menuItems[$menuItem->textContent] = $menuItem->nodeName === 'span'
63+
? null
64+
: $menuItem->getAttribute('href')
65+
;
66+
}
67+
68+
$this->assertEquals($expectedItems, $menuItems);
69+
}
70+
}

Tests/Resources/Controller/TestController.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

Tests/Resources/Controller/VoterController.php

Lines changed: 0 additions & 69 deletions
This file was deleted.

Tests/Resources/DataFixtures/PHPCR/LoadMenuData.php

Lines changed: 12 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr\MenuNode;
1818
use Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr\Menu;
1919
use Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document\Content;
20-
use Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Document\Post;
2120
use Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route;
2221
use PHPCR\Util\NodeHelper;
2322

@@ -33,17 +32,22 @@ public function load(ObjectManager $manager)
3332
$this->menuRoot = $manager->find(null, '/test/menus');
3433
$this->routeRoot = $manager->find(null, '/test/routes');
3534

36-
$this->loadMainMenu($manager);
37-
$this->loadVoterMenu($manager);
35+
$this->loadMenu($manager);
3836

3937
$manager->flush();
4038
}
4139

42-
protected function loadMainMenu(DocumentManager $manager)
40+
protected function loadMenu(DocumentManager $manager)
4341
{
42+
$route = new Route();
43+
$route->setName('content-1');
44+
$route->setParentDocument($this->routeRoot);
45+
$manager->persist($route);
46+
4447
$content = new Content();
4548
$content->setTitle('Menu Item Content 1');
4649
$content->setId('/test/content-menu-item-1');
50+
$content->addRoute($route);
4751

4852
$menu = new Menu();
4953
$menu->setName('test-menu');
@@ -57,23 +61,22 @@ protected function loadMainMenu(DocumentManager $manager)
5761
$menuNode->setName('item-1');
5862
$manager->persist($menuNode);
5963

60-
$content->addMenuNode($menuNode);
61-
6264
$menuNode = new MenuNode();
6365
$menuNode->setParentDocument($menu);
6466
$menuNode->setLabel('This node has a URI');
6567
$menuNode->setUri('http://www.example.com');
6668
$menuNode->setName('item-2');
6769
$manager->persist($menuNode);
6870

69-
$content->addMenuNode($menuNode);
70-
7171
$subNode = new MenuNode();
7272
$subNode->setParentDocument($menuNode);
73-
$subNode->setLabel('@todo this node should have content');
73+
$subNode->setLabel('This node has content');
7474
$subNode->setName('sub-item-1');
75+
$subNode->setContent($content);
7576
$manager->persist($subNode);
7677

78+
$content->addMenuNode($subNode);
79+
7780
$subNode = new MenuNode();
7881
$subNode->setParentDocument($menuNode);
7982
$subNode->setLabel('This node has an assigned route');
@@ -118,106 +121,4 @@ protected function loadMainMenu(DocumentManager $manager)
118121

119122
$manager->persist($content);
120123
}
121-
122-
protected function loadVoterMenu(DocumentManager $manager)
123-
{
124-
// test content
125-
$content = new Content();
126-
$content->setTitle('Content 1');
127-
$content->setId('/test/content-1');
128-
$manager->persist($content);
129-
130-
$route = new Route();
131-
$route->setId('/test/routes/contents/content-1');
132-
$route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::requestContentIdentityAction');
133-
$route->setContent($content);
134-
$manager->persist($route);
135-
136-
// test blog
137-
$blog = new Content();
138-
$blog->setTitle('Blog');
139-
$blog->setId('/test/blog-1');
140-
$manager->persist($blog);
141-
142-
$route = new Route();
143-
$route->setId('/test/routes/blog');
144-
$route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::blogAction');
145-
$route->setContent($blog);
146-
$manager->persist($route);
147-
148-
// test blog post
149-
$post = new Post();
150-
$post->setTitle('My Post');
151-
$post->setId('/test/blog-1/my-post');
152-
$manager->persist($post);
153-
154-
$route = new Route();
155-
$route->setId('/test/routes/blog/my-post');
156-
$route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::postAction');
157-
$route->setContent($post);
158-
$manager->persist($route);
159-
160-
// test articles
161-
$articles = new Content();
162-
$articles->setTitle('Articles Index');
163-
$articles->setId('/test/articles');
164-
$manager->persist($articles);
165-
166-
$articlesRoute = new Route();
167-
$articlesRoute->setId('/test/routes/articles');
168-
$articlesRoute->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::articlesAction');
169-
$articlesRoute->setContent($articles);
170-
$articlesRoute->setOption('currentUriPrefix', '/articles');
171-
$manager->persist($articlesRoute);
172-
173-
$article1 = new Content();
174-
$article1->setTitle('Article 1');
175-
$article1->setId('/test/article-1');
176-
$manager->persist($article1);
177-
178-
$route = new Route();
179-
$route->setId('/test/routes/articles/some-category');
180-
$manager->persist($route);
181-
182-
$route = new Route();
183-
$route->setId('/test/routes/articles/some-category/article-1');
184-
$route->setDefault('_controller', 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::postAction');
185-
$route->setContent($article1);
186-
$manager->persist($route);
187-
188-
// menu items
189-
$menu = new Menu();
190-
$menu->setName('side-menu');
191-
$menu->setLabel('Side Menu');
192-
$menu->setParentDocument($this->menuRoot);
193-
$manager->persist($menu);
194-
195-
$menuNode = new MenuNode();
196-
$menuNode->setParentDocument($menu);
197-
$menuNode->setLabel('Default Behavior');
198-
$menuNode->setName('default');
199-
$menuNode->setRoute('current_menu_item_default');
200-
$manager->persist($menuNode);
201-
202-
$menuNode = new MenuNode();
203-
$menuNode->setParentDocument($menu);
204-
$menuNode->setLabel('Request Content Identity Voter');
205-
$menuNode->setName('request-content-identity-voter');
206-
$menuNode->setContent($content);
207-
$manager->persist($menuNode);
208-
209-
$menuNode = new MenuNode();
210-
$menuNode->setParentDocument($menu);
211-
$menuNode->setLabel('URI Prefix Voter');
212-
$menuNode->setName('uri-prefix-voter');
213-
$menuNode->setContent($articlesRoute);
214-
$manager->persist($menuNode);
215-
216-
$menuNode = new MenuNode();
217-
$menuNode->setParentDocument($menu);
218-
$menuNode->setLabel('Request Parent Content Identity Voter');
219-
$menuNode->setName('request-parent-content-identity-voter');
220-
$menuNode->setContent($blog);
221-
$manager->persist($menuNode);
222-
}
223124
}

Tests/Resources/Document/Post.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

Tests/Resources/app/Resources/views/index.html.twig

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)