|
13 | 13 |
|
14 | 14 | use Doctrine\Common\Annotations\AnnotationReader;
|
15 | 15 | use Doctrine\Common\Annotations\AnnotationRegistry;
|
16 |
| -use PHPUnit\Framework\TestCase; |
| 16 | +use Symfony\Component\Routing\Annotation\Route as RouteAnnotation; |
17 | 17 | use Symfony\Component\Routing\Loader\AnnotationClassLoader;
|
18 | 18 | use Symfony\Component\Routing\Route;
|
19 | 19 | use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\AbstractClassController;
|
|
35 | 35 | use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\PrefixedActionPathController;
|
36 | 36 | use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RouteWithPrefixController;
|
37 | 37 |
|
38 |
| -class AnnotationClassLoaderTest extends TestCase |
| 38 | +class AnnotationClassLoaderTest extends AbstractAnnotationLoaderTest |
39 | 39 | {
|
40 | 40 | /**
|
41 | 41 | * @var AnnotationClassLoader
|
@@ -166,6 +166,51 @@ public function testLocalizedPrefixLocalizedRoute()
|
166 | 166 | $this->assertEquals('/en/action', $routes->get('action.en')->getPath());
|
167 | 167 | }
|
168 | 168 |
|
| 169 | + public function testInvokableClassMultipleRouteLoad() |
| 170 | + { |
| 171 | + $classRouteData1 = array( |
| 172 | + 'name' => 'route1', |
| 173 | + 'path' => '/1', |
| 174 | + 'schemes' => array('https'), |
| 175 | + 'methods' => array('GET'), |
| 176 | + ); |
| 177 | + |
| 178 | + $classRouteData2 = array( |
| 179 | + 'name' => 'route2', |
| 180 | + 'path' => '/2', |
| 181 | + 'schemes' => array('https'), |
| 182 | + 'methods' => array('GET'), |
| 183 | + ); |
| 184 | + |
| 185 | + $reader = $this->getReader(); |
| 186 | + $reader |
| 187 | + ->expects($this->exactly(1)) |
| 188 | + ->method('getClassAnnotations') |
| 189 | + ->will($this->returnValue(array(new RouteAnnotation($classRouteData1), new RouteAnnotation($classRouteData2)))) |
| 190 | + ; |
| 191 | + $reader |
| 192 | + ->expects($this->once()) |
| 193 | + ->method('getMethodAnnotations') |
| 194 | + ->will($this->returnValue(array())) |
| 195 | + ; |
| 196 | + $loader = new class($reader) extends AnnotationClassLoader { |
| 197 | + protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot) {} |
| 198 | + }; |
| 199 | + |
| 200 | + $routeCollection = $loader->load('Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BazClass'); |
| 201 | + $route = $routeCollection->get($classRouteData1['name']); |
| 202 | + |
| 203 | + $this->assertSame($classRouteData1['path'], $route->getPath(), '->load preserves class route path'); |
| 204 | + $this->assertEquals($classRouteData1['schemes'], $route->getSchemes(), '->load preserves class route schemes'); |
| 205 | + $this->assertEquals($classRouteData1['methods'], $route->getMethods(), '->load preserves class route methods'); |
| 206 | + |
| 207 | + $route = $routeCollection->get($classRouteData2['name']); |
| 208 | + |
| 209 | + $this->assertSame($classRouteData2['path'], $route->getPath(), '->load preserves class route path'); |
| 210 | + $this->assertEquals($classRouteData2['schemes'], $route->getSchemes(), '->load preserves class route schemes'); |
| 211 | + $this->assertEquals($classRouteData2['methods'], $route->getMethods(), '->load preserves class route methods'); |
| 212 | + } |
| 213 | + |
169 | 214 | public function testMissingPrefixLocale()
|
170 | 215 | {
|
171 | 216 | $this->expectException(\LogicException::class);
|
|
0 commit comments