| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace Test\Michel;
- use Michel\Route;
- use Michel\UniTester\TestCase;
- class AttributeRouteCollectorTest extends TestCase
- {
- protected function setUp(): void
- {
- // TODO: Implement setUp() method.
- }
- protected function tearDown(): void
- {
- // TODO: Implement tearDown() method.
- }
- protected function execute(): void
- {
- if (PHP_VERSION_ID < 80000) {
- return;
- }
- $attributeRouteCollector = new \Michel\Attribute\AttributeRouteCollector([
- 'Test\Michel\Controller\UserController',
- 'Test\Michel\Controller\ProductController',
- 'Test\Michel\Controller\ApiController',
- 'Test\Michel\Controller\PingController'
- ]);
- $routes = $attributeRouteCollector->collect();
- $this->assertStrictEquals(9, count($routes));
- $attributeRouteCollector = new \Michel\Attribute\AttributeRouteCollector([
- 'Test\Michel\Controller\UserController'
- ]);
- $routes = $attributeRouteCollector->collect();
- $this->assertStrictEquals(3, count($routes));
- $this->assertStrictEquals('user_list', $routes[0]->getName());
- $this->assertEquals(['GET', 'HEAD'], $routes[0]->getMethods());
- $this->assertStrictEquals('user_show', $routes[1]->getName());
- $this->assertEquals(['GET', 'HEAD'], $routes[1]->getMethods());
- $this->assertStrictEquals('user_create', $routes[2]->getName());
- $this->assertEquals(['POST'], $routes[2]->getMethods());
- $attributeRouteCollector = new \Michel\Attribute\AttributeRouteCollector([
- 'Test\Michel\Controller\PingController'
- ]);
- $routes = $attributeRouteCollector->collect();
- $this->assertStrictEquals(1, count($routes));
- $this->assertStrictEquals('/api/ping', $routes[0]->getPath());
- $this->assertEquals(['GET', 'HEAD'], $routes[0]->getMethods());
- $this->assertEquals('json', $routes[0]->getFormat());
- $this->testCache();
- }
- private function testCache(): void
- {
- $controllers = [
- 'Test\Michel\Controller\UserController',
- 'Test\Michel\Controller\ProductController',
- 'Test\Michel\Controller\ApiController',
- 'Test\Michel\Controller\PingController'
- ];
- $cacheDir = dirname(__FILE__) . '/cache';
- if (is_dir($cacheDir)) {
- foreach (glob($cacheDir . '/*') as $file) {
- unlink($file);
- }
- rmdir($cacheDir);
- }
- mkdir($cacheDir, 0777, true);
- $attributeRouteCollector = new \Michel\Attribute\AttributeRouteCollector($controllers, $cacheDir);
- $attributeRouteCollector->generateCache();
- $this->assertTrue(is_dir($cacheDir));
- foreach ($controllers as $controller) {
- $cacheFile = $cacheDir . '/' . md5($controller) . '.php';
- $this->assertTrue(file_exists($cacheFile));
- }
- $routes = $attributeRouteCollector->collect();
- $this->assertStrictEquals(9, count($routes));
- foreach ($routes as $route) {
- $this->assertInstanceOf(Route::class, $route);
- }
- $attributeRouteCollector->clearCache();
- rmdir($cacheDir);
- }
- }
|