コード例 #1
0
 public function testSortByPriority()
 {
     $routes = new SortableRouteCollection();
     $routes->add('route1', new Route('/path1'));
     $routes->add('route2', new Route('/path2'));
     $routes->add('route3', new Route('/path3', [], [], ['priority' => 1]));
     $routes->add('route4', new Route('/path4', [], [], ['priority' => 1]));
     $routes->add('route5', new Route('/path5', [], [], ['priority' => 0]));
     $routes->add('route6', new Route('/path6', [], [], ['priority' => 2]));
     $routes->add('route7', new Route('/path7', [], [], []));
     $routes->sortByPriority();
     $this->assertSame(['route6', 'route3', 'route4', 'route1', 'route2', 'route5', 'route7'], array_keys($routes->all()));
 }
コード例 #2
0
 /**
  * {@inheritdoc}
  */
 public function load($resource, $type = null)
 {
     $routes = new SortableRouteCollection();
     foreach ($this->getResources() as $resource) {
         $routes->addCollection($this->resolve($resource)->load($resource));
     }
     $routeCollectionAccessor = new RouteCollectionAccessor($routes);
     /** @var Route $route */
     foreach ($routes as $route) {
         $this->routeOptionsResolver->resolve($route, $routeCollectionAccessor);
     }
     $routes->sortByPriority();
     return $routes;
 }
 public function testResolve()
 {
     $route = new Route('/{activity}/route', [], [], ['group' => ActivityAssociationRouteOptionsResolver::ROUTE_GROUP]);
     $this->routeCollection->add('first_route', new Route('/first_route'));
     $this->routeCollection->add('override_before', new Route('/events/route'));
     $this->routeCollection->add('some_route', new Route('/some_route'));
     $this->routeCollection->add('tested_route', $route);
     $this->routeCollection->add('override_after', new Route('/emails/route'));
     $this->routeCollection->add('last_route', new Route('/last_route'));
     $config1 = new Config(new EntityConfigId('grouping', 'Test\\Email'));
     $config1->set('groups', ['activity']);
     $config2 = new Config(new EntityConfigId('grouping', 'Test\\Call'));
     $config2->set('groups', ['test', 'activity']);
     $config3 = new Config(new EntityConfigId('grouping', 'Test\\Task'));
     $config3->set('groups', ['activity']);
     $config4 = new Config(new EntityConfigId('grouping', 'Test\\Message'));
     $config5 = new Config(new EntityConfigId('grouping', 'Test\\Event'));
     $config5->set('groups', ['activity']);
     $this->groupingConfigProvider->expects($this->once())->method('getConfigs')->with(null, false)->willReturn([$config1, $config2, $config3, $config4, $config5]);
     $this->entityAliasResolver->expects($this->exactly(4))->method('getPluralAlias')->willReturnMap([['Test\\Email', 'emails'], ['Test\\Call', 'calls'], ['Test\\Task', 'tasks'], ['Test\\Event', 'events']]);
     $this->routeOptionsResolver->resolve($route, $this->routeCollectionAccessor);
     $this->assertEquals(['activity' => '\\w+'], $route->getRequirements());
     $this->routeCollection->sortByPriority();
     $this->assertEquals(['first_route', 'some_route', 'override_after', 'tested_route_auto_7', 'tested_route_auto_8', 'override_before', 'tested_route', 'last_route'], array_keys($this->routeCollection->all()));
     $this->assertEquals('\\w+', $this->routeCollection->get('tested_route')->getRequirement('activity'));
     $this->assertEquals('calls', $this->routeCollection->get('tested_route_auto_7')->getDefault('activity'));
     $this->assertEquals('tasks', $this->routeCollection->get('tested_route_auto_8')->getDefault('activity'));
 }
コード例 #4
0
 public function testResolve()
 {
     $route = new Route('/{dictionary}/route', [], [], ['group' => DictionaryEntityRouteOptionsResolver::ROUTE_GROUP]);
     $this->routeCollection->add('first_route', new Route('/first_route'));
     $this->routeCollection->add('override_before', new Route('/sources/route'));
     $this->routeCollection->add('some_route', new Route('/some_route'));
     $this->routeCollection->add('tested_route', $route);
     $this->routeCollection->add('override_after', new Route('/statuses/route'));
     $this->routeCollection->add('last_route', new Route('/last_route'));
     $this->dictionaryProvider->expects($this->once())->method('getSupportedEntityClasses')->willReturn(['Test\\Status', 'Test\\Priority', 'Test\\Source', 'Test\\Group']);
     $this->entityAliasResolver->expects($this->exactly(4))->method('getPluralAlias')->willReturnMap([['Test\\Status', 'statuses'], ['Test\\Priority', 'priorities'], ['Test\\Source', 'sources'], ['Test\\Group', 'groups']]);
     $this->entityClassNameHelper->expects($this->any())->method('getUrlSafeClassName')->willReturnCallback(function ($className) {
         return str_replace('\\', '_', $className);
     });
     $this->routeOptionsResolver->resolve($route, $this->routeCollectionAccessor);
     $this->assertEquals(['dictionary' => 'priorities|Test_Priority|groups|Test_Group'], $route->getRequirements());
     $this->routeCollection->sortByPriority();
     $this->assertEquals(['first_route', 'some_route', 'override_after', 'tested_route_auto_7', 'override_before', 'tested_route_auto_8', 'tested_route', 'last_route'], array_keys($this->routeCollection->all()));
     $this->assertEquals('priorities|Test_Priority|groups|Test_Group', $this->routeCollection->get('tested_route')->getRequirement('dictionary'));
     $this->assertEquals('priorities', $this->routeCollection->get('tested_route_auto_7')->getDefault('dictionary'));
     $this->assertEquals('groups', $this->routeCollection->get('tested_route_auto_8')->getDefault('dictionary'));
 }
 public function testResolve()
 {
     $route = new Route('/{activity}/route', [], [], ['group' => 'activity_association']);
     $this->routeCollection->add('first_route', new Route('/first_route'));
     $this->routeCollection->add('override1', new Route('/notes/route'));
     $this->routeCollection->add('some_route', new Route('/some_route'));
     $this->routeCollection->add('tested_route', $route);
     $this->routeCollection->add('override2', new Route('/emails/route'));
     $this->routeCollection->add('last_route', new Route('/last_route'));
     $config1 = new Config(new EntityConfigId('grouping', 'Test\\Email'));
     $config1->set('groups', ['activity']);
     $config2 = new Config(new EntityConfigId('grouping', 'Test\\Call'));
     $config2->set('groups', ['test', 'activity']);
     $config3 = new Config(new EntityConfigId('grouping', 'Test\\Message'));
     $config4 = new Config(new EntityConfigId('grouping', 'Test\\Note'));
     $config4->set('groups', ['activity']);
     $this->groupingConfigProvider->expects($this->once())->method('getConfigs')->with(null, false)->willReturn([$config1, $config2, $config3, $config4]);
     $this->entityAliasResolver->expects($this->exactly(3))->method('getPluralAlias')->willReturnMap([['Test\\Email', 'emails'], ['Test\\Call', 'calls'], ['Test\\Note', 'notes']]);
     $this->routeOptionsResolver->resolve($route, $this->routeCollectionAccessor);
     $this->assertEquals(['activity' => 'emails|calls|notes'], $route->getRequirements());
     $this->routeCollection->sortByPriority();
     $this->assertEquals(['first_route', 'some_route', 'override2', 'tested_route_auto_7', 'override1', 'tested_route', 'last_route'], array_keys($this->routeCollection->all()));
     $this->assertEquals('emails|calls|notes', $this->routeCollection->get('tested_route')->getRequirement('activity'));
     $this->assertEquals('calls', $this->routeCollection->get('tested_route_auto_7')->getDefault('activity'));
 }