示例#1
0
 /**
  * Invoke plugin and test various valid and invalid parameter sets
  */
 public function testInvoke()
 {
     // Navigation structure for tests. It contains the label "test" 3 times
     // (once on a top menu with no submenu, twice on different submenus) to
     // be able to test for correct location of labels.
     $data = array(array('label' => 'test', 'uri' => 'top0'), array('label' => 'top1', 'uri' => 'top1', 'pages' => array(array('label' => 'test', 'uri' => 'sub1'))), array('label' => 'top2', 'uri' => 'top2', 'pages' => array(array('label' => 'test', 'uri' => 'sub2'))));
     // Test first top menu
     $navigation = new \Zend\Navigation\Navigation($data);
     $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation);
     $plugin('test');
     $this->assertTrue($navigation->findOneByUri('top0')->isActive());
     // Test last top menu
     $navigation = new \Zend\Navigation\Navigation($data);
     $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation);
     $plugin('top2');
     $this->assertTrue($navigation->findOneByUri('top2')->isActive());
     // Test both submenus (ensure that the correct one is picked)
     $navigation = new \Zend\Navigation\Navigation($data);
     $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation);
     $plugin('top1', 'test');
     $this->assertTrue($navigation->findOneByUri('sub1')->isActive());
     $navigation = new \Zend\Navigation\Navigation($data);
     $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation);
     $plugin('top2', 'test');
     $this->assertTrue($navigation->findOneByUri('sub2')->isActive());
     // Test exception on invalid top menu
     try {
         $plugin('invalid');
         $this->fail('No exception thrown on invalid $mainPage');
     } catch (\Exception $e) {
         $this->assertEquals('Invalid top menu page: invalid', $e->getMessage());
     }
     // Test exception on invalid submenu if top menu does not have a submenu
     try {
         $plugin('test', 'invalid');
         $this->fail('No exception thrown on invalid $subPage');
     } catch (\Exception $e) {
         $this->assertEquals('Invalid submenu page: invalid', $e->getMessage());
     }
     // Test exception on invalid submenu if top menu has a submenu
     try {
         $plugin('top1', 'invalid');
         $this->fail('No exception thrown on invalid $subPage');
     } catch (\Exception $e) {
         $this->assertEquals('Invalid submenu page: invalid', $e->getMessage());
     }
 }