From f55b1f664d819b946900dbdc225432f4b86be81c Mon Sep 17 00:00:00 2001 From: Dima Date: Mon, 1 Apr 2019 16:40:29 +0200 Subject: [PATCH 1/8] Update node visit order --- .gitignore | 1 + src/DAMA/MenuBundle/Resources/config/services.yml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 7517882..e142225 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ composer.phar vendor tests/Functional/cache tests/Functional/logs +var/ diff --git a/src/DAMA/MenuBundle/Resources/config/services.yml b/src/DAMA/MenuBundle/Resources/config/services.yml index 5b79dcb..658e1eb 100644 --- a/src/DAMA/MenuBundle/Resources/config/services.yml +++ b/src/DAMA/MenuBundle/Resources/config/services.yml @@ -27,7 +27,7 @@ services: class: DAMA\MenuBundle\NodeVisitor\NodeFilter arguments: ["@security.token_storage", "@security.authorization_checker"] tags: - - { name: dama_menu.node_visitor, priority: 1 } + - { name: dama_menu.node_visitor, priority: 3 } dama_menu.node_visitor.activator: class: DAMA\MenuBundle\NodeVisitor\NodeActivator @@ -38,4 +38,4 @@ services: dama_menu.node_visitor.node_route_propagator: class: DAMA\MenuBundle\NodeVisitor\NodeRoutePropagator tags: - - { name: dama_menu.node_visitor, priority: 3 } + - { name: dama_menu.node_visitor, priority: 1 } From 7adc29dab2f487742b5953698eff750e4e6ddcc8 Mon Sep 17 00:00:00 2001 From: Dmitry Naydonov Date: Mon, 1 Apr 2019 16:46:47 +0200 Subject: [PATCH 2/8] Delete .gitignore --- .gitignore | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e142225..0000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.idea -composer.lock -composer.phar -vendor -tests/Functional/cache -tests/Functional/logs -var/ From 6b15245726aa79318acad0c6c70222e2cb3c180f Mon Sep 17 00:00:00 2001 From: Dima Date: Mon, 1 Apr 2019 16:48:10 +0200 Subject: [PATCH 3/8] Update node visit order --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index e142225..7517882 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ composer.phar vendor tests/Functional/cache tests/Functional/logs -var/ From 9f38e5ffad18a111ba84d9957a9d46360580c244 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 4 Apr 2019 14:01:58 +0200 Subject: [PATCH 4/8] Update node visit order - test was added --- tests/Functional/FunctionalTest.php | 8 ++-- .../MenuTree/MenuTreeTraverserTest.php | 44 +++++++++++++++++++ tests/Functional/TestMenuTreeBuilder.php | 13 +++++- tests/Functional/routing.yml | 11 +++++ tests/MenuTree/MenuTreeTraverserTest.php | 6 +-- 5 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 tests/Functional/MenuTree/MenuTreeTraverserTest.php diff --git a/tests/Functional/FunctionalTest.php b/tests/Functional/FunctionalTest.php index 276d63a..d118a8f 100644 --- a/tests/Functional/FunctionalTest.php +++ b/tests/Functional/FunctionalTest.php @@ -6,16 +6,16 @@ class FunctionalTest extends WebTestCase { - public function testRenderMenuOne() + public function testRenderMenuOne(): void { - $client = $this->createClient(); + $client = static::createClient(); $crawler = $client->request('GET', '/'); $this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertCount(1, $crawler->filter('ul.menu-layer-1')); - $this->assertCount(1, $crawler->filter('ul.menu-layer-2')); + $this->assertCount(2, $crawler->filter('ul.menu-layer-2')); - $this->assertCount(2, $crawler->filter('li.menu-item')); + $this->assertCount(4, $crawler->filter('li.menu-item')); $this->assertCount(0, $crawler->filter('li.bla-class')); $this->assertCount(1, $crawler->filter('li.foo-child-class')); } diff --git a/tests/Functional/MenuTree/MenuTreeTraverserTest.php b/tests/Functional/MenuTree/MenuTreeTraverserTest.php new file mode 100644 index 0000000..e64a8e4 --- /dev/null +++ b/tests/Functional/MenuTree/MenuTreeTraverserTest.php @@ -0,0 +1,44 @@ +webClient = static::createClient(); + } + + public function testMenu(): void + { + $children = $this + ->getMenuFactory() + ->create('test_menu') + ->getChildren() + ; + + $this->assertCount(1, $children); + + /** @var Node $child */ + $child = reset($children); + + $this->assertSame('test_2', $child->getRoute()); + } + + private function getMenuFactory(): MenuFactoryInterface + { + return self::$container->get('dama_menu.menu_factory'); + } +} diff --git a/tests/Functional/TestMenuTreeBuilder.php b/tests/Functional/TestMenuTreeBuilder.php index 7a8f510..bed6b4a 100644 --- a/tests/Functional/TestMenuTreeBuilder.php +++ b/tests/Functional/TestMenuTreeBuilder.php @@ -4,11 +4,10 @@ use DAMA\MenuBundle\MenuTree\MenuTreeBuilderInterface; use DAMA\MenuBundle\Node\Node; -use Symfony\Component\ExpressionLanguage\Expression; class TestMenuTreeBuilder implements MenuTreeBuilderInterface { - public function build(Node $root) + public function build(Node $root): void { $root ->child('bla') @@ -22,6 +21,16 @@ public function build(Node $root) ->setAttr('class', 'foo-child-class') ->end() ->end() + ->child('bar') + ->setAdditionalActiveRoutes(['test_1', 'test_2']) + ->child('bar-sub-1') + ->setRoute('test_1') + ->setRequiredPermissions(['IS_AUTHENTICATED_FULLY']) + ->end() + ->child('bar-sub-2') + ->setRoute('test_2') + ->end() + ->end() ; } } diff --git a/tests/Functional/routing.yml b/tests/Functional/routing.yml index 6616880..f20689d 100644 --- a/tests/Functional/routing.yml +++ b/tests/Functional/routing.yml @@ -4,3 +4,14 @@ test: defaults: template: test_menu.html.twig +test_1: + path: /test_1 + controller: 'FrameworkBundle:Template:template' + defaults: + template: test_menu.html.twig + +test_2: + path: /test_2 + controller: 'FrameworkBundle:Template:template' + defaults: + template: test_menu.html.twig diff --git a/tests/MenuTree/MenuTreeTraverserTest.php b/tests/MenuTree/MenuTreeTraverserTest.php index f097876..638a3e1 100644 --- a/tests/MenuTree/MenuTreeTraverserTest.php +++ b/tests/MenuTree/MenuTreeTraverserTest.php @@ -30,7 +30,7 @@ public function setUp() $this->traverser->addVisitor($this->visitors[1]); } - public function testTraverseCallsVisitOnEachVisitor() + public function testTraverseCallsVisitOnEachVisitor(): void { $root = new Node(); $child = new Node(); @@ -43,7 +43,7 @@ public function testTraverseCallsVisitOnEachVisitor() $this->traverser->traverse($root); } - public function testStopTraversal() + public function testStopTraversal(): void { $root = new Node(); $child = new Node(); @@ -64,7 +64,7 @@ public function testStopTraversal() $this->traverser->traverse($root); } - public function testTraverseRecursively() + public function testTraverseRecursively(): void { $root = new Node(); $child = new Node(); From 7894fa923faa8755ce71282642ddae6e55e65c14 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 4 Apr 2019 14:12:33 +0200 Subject: [PATCH 5/8] Update node visit order --- tests/Functional/FunctionalTest.php | 2 +- tests/Functional/MenuTree/MenuTreeTraverserTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Functional/FunctionalTest.php b/tests/Functional/FunctionalTest.php index d118a8f..da2894c 100644 --- a/tests/Functional/FunctionalTest.php +++ b/tests/Functional/FunctionalTest.php @@ -8,7 +8,7 @@ class FunctionalTest extends WebTestCase { public function testRenderMenuOne(): void { - $client = static::createClient(); + $client = $this->createClient(); $crawler = $client->request('GET', '/'); $this->assertSame(200, $client->getResponse()->getStatusCode()); diff --git a/tests/Functional/MenuTree/MenuTreeTraverserTest.php b/tests/Functional/MenuTree/MenuTreeTraverserTest.php index e64a8e4..36bdc67 100644 --- a/tests/Functional/MenuTree/MenuTreeTraverserTest.php +++ b/tests/Functional/MenuTree/MenuTreeTraverserTest.php @@ -18,7 +18,7 @@ public function setUp() { parent::setUp(); - $this->webClient = static::createClient(); + $this->webClient = $this->createClient(); } public function testMenu(): void From bd049259413c951772c03b36c53ad3d50c6b2da1 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 4 Apr 2019 14:15:54 +0200 Subject: [PATCH 6/8] Update node visit order --- tests/Functional/MenuTree/MenuTreeTraverserTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Functional/MenuTree/MenuTreeTraverserTest.php b/tests/Functional/MenuTree/MenuTreeTraverserTest.php index 36bdc67..18a96b7 100644 --- a/tests/Functional/MenuTree/MenuTreeTraverserTest.php +++ b/tests/Functional/MenuTree/MenuTreeTraverserTest.php @@ -39,6 +39,6 @@ public function testMenu(): void private function getMenuFactory(): MenuFactoryInterface { - return self::$container->get('dama_menu.menu_factory'); + return $this->container->get('dama_menu.menu_factory'); } } From 9caaedebf43a185703ffc69e229281ffe1697102 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 4 Apr 2019 14:19:40 +0200 Subject: [PATCH 7/8] Update node visit order --- tests/Functional/MenuTree/MenuTreeTraverserTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Functional/MenuTree/MenuTreeTraverserTest.php b/tests/Functional/MenuTree/MenuTreeTraverserTest.php index 18a96b7..435c1aa 100644 --- a/tests/Functional/MenuTree/MenuTreeTraverserTest.php +++ b/tests/Functional/MenuTree/MenuTreeTraverserTest.php @@ -39,6 +39,6 @@ public function testMenu(): void private function getMenuFactory(): MenuFactoryInterface { - return $this->container->get('dama_menu.menu_factory'); + return $this->webClient->getContainer()->get('dama_menu.menu_factory'); } } From f8deb965562d3153c7fbeb36301f8fa509b442e4 Mon Sep 17 00:00:00 2001 From: Dima Date: Fri, 5 Apr 2019 10:15:41 +0200 Subject: [PATCH 8/8] Update node visit order --- tests/Functional/FunctionalTest.php | 3 ++ .../MenuTree/MenuTreeTraverserTest.php | 44 ------------------- 2 files changed, 3 insertions(+), 44 deletions(-) delete mode 100644 tests/Functional/MenuTree/MenuTreeTraverserTest.php diff --git a/tests/Functional/FunctionalTest.php b/tests/Functional/FunctionalTest.php index da2894c..02fd3e5 100644 --- a/tests/Functional/FunctionalTest.php +++ b/tests/Functional/FunctionalTest.php @@ -18,5 +18,8 @@ public function testRenderMenuOne(): void $this->assertCount(4, $crawler->filter('li.menu-item')); $this->assertCount(0, $crawler->filter('li.bla-class')); $this->assertCount(1, $crawler->filter('li.foo-child-class')); + + $this->assertCount(2, $crawler->filter('a[href="/test_2"]')); + $this->assertCount(0, $crawler->filter('a[href="/test_1"]')); } } diff --git a/tests/Functional/MenuTree/MenuTreeTraverserTest.php b/tests/Functional/MenuTree/MenuTreeTraverserTest.php deleted file mode 100644 index 435c1aa..0000000 --- a/tests/Functional/MenuTree/MenuTreeTraverserTest.php +++ /dev/null @@ -1,44 +0,0 @@ -webClient = $this->createClient(); - } - - public function testMenu(): void - { - $children = $this - ->getMenuFactory() - ->create('test_menu') - ->getChildren() - ; - - $this->assertCount(1, $children); - - /** @var Node $child */ - $child = reset($children); - - $this->assertSame('test_2', $child->getRoute()); - } - - private function getMenuFactory(): MenuFactoryInterface - { - return $this->webClient->getContainer()->get('dama_menu.menu_factory'); - } -}