protected function setUp() { $this->container = new Container(); $this->configurationBuilder = new ConfigurationBuilder(); $this->factory = $this->getMockBuilder('Knp\\Menu\\MenuFactory')->setMethods(array('getRouteInfo', 'processRoute'))->getMock(); $this->factory->expects($this->any())->method('getRouteInfo')->will($this->returnValue(false)); $this->factory->expects($this->any())->method('processRoute')->will($this->returnSelf()); }
/** * @dataProvider hasInCacheDataProvider * @param boolean $hasInCache */ public function testRouteCaching($hasInCache) { $params = array('id' => 20); $uriKey = md5('route_uri:route_name' . serialize($params)); $aclKey = md5('route_acl:route_name'); $cache = $this->getMockBuilder('Doctrine\\Common\\Cache\\ArrayCache')->getMock(); $cache->expects($this->exactly(2))->method('contains')->will($this->returnValueMap(array(array($uriKey, $hasInCache), array($aclKey, $hasInCache)))); if ($hasInCache) { $cache->expects($this->exactly(2))->method('fetch')->will($this->returnValueMap(array(array($uriKey, '/'), array($aclKey, 'controller::action')))); } else { $cache->expects($this->exactly(2))->method('save')->with($this->logicalOr($this->equalTo($aclKey), $this->equalTo('controller::action'), $this->equalTo($uriKey), $this->equalTo('/'))); } $this->factoryExtension->setCache($cache); $options = array('route' => 'route_name', 'routeParameters' => $params); $this->assertRouteByRouteNameCalls(true, 'route_name', 'controller', 'action', (int) (!$hasInCache)); $item = $this->factory->createItem('test', $options); $this->assertTrue($item->getExtra('isAllowed')); $this->assertInstanceOf('Knp\\Menu\\MenuItem', $item); }