dispatch('GET', '/')); } public function testGetDispatcherWithValidCacheFile(): void { $GLOBALS['cfg']['environment'] = 'production'; $_SESSION['isRoutesCacheFileValid'] = true; self::assertDirectoryIsWritable(CACHE_DIR); $routeCollector = new RouteCollector(new RouteParserStd(), new DataGeneratorGroupCountBased()); $routeDefinitionCallback = require TEST_PATH . 'libraries/routes.php'; $routeDefinitionCallback($routeCollector); $routesData = sprintf('getData(), true)); self::assertNotFalse(file_put_contents(Routing::ROUTES_CACHE_FILE, $routesData)); $expected = [Dispatcher::FOUND, HomeController::class, []]; self::assertSame($expected, Routing::getDispatcher()->dispatch('GET', '/')); } public function testGetDispatcherWithInvalidCacheFile(): void { $GLOBALS['cfg']['environment'] = 'production'; $_SESSION['isRoutesCacheFileValid'] = null; self::assertDirectoryIsWritable(CACHE_DIR); $routeCollector = new RouteCollector(new RouteParserStd(), new DataGeneratorGroupCountBased()); $routeDefinitionCallback = require TEST_PATH . 'libraries/routes.php'; $routeDefinitionCallback($routeCollector); $dispatchData = $routeCollector->getData(); /** @psalm-suppress MixedArrayAccess */ unset($dispatchData[0]['GET']['/']); $routesData = sprintf('dispatch('GET', '/')); } public function testGetDispatcherWithNoCacheFile(): void { $GLOBALS['cfg']['environment'] = 'production'; $_SESSION['isRoutesCacheFileValid'] = null; self::assertDirectoryIsWritable(CACHE_DIR); if (file_exists(Routing::ROUTES_CACHE_FILE)) { self::assertTrue(unlink(Routing::ROUTES_CACHE_FILE)); } $expected = [Dispatcher::FOUND, HomeController::class, []]; self::assertSame($expected, Routing::getDispatcher()->dispatch('GET', '/')); } /** * Test for Routing::getCurrentRoute */ public function testGetCurrentRouteNoParams(): void { self::assertSame('/', Routing::getCurrentRoute()); } /** * Test for Routing::getCurrentRoute */ public function testGetCurrentRouteGet(): void { $_GET['route'] = '/test'; self::assertSame('/test', Routing::getCurrentRoute()); } /** * Test for Routing::getCurrentRoute */ public function testGetCurrentRoutePost(): void { unset($_GET['route']); $_POST['route'] = '/testpost'; self::assertSame('/testpost', Routing::getCurrentRoute()); } /** * Test for Routing::getCurrentRoute */ public function testGetCurrentRouteGetIsOverPost(): void { $_GET['route'] = '/testget'; $_POST['route'] = '/testpost'; self::assertSame('/testget', Routing::getCurrentRoute()); } /** * Test for Routing::getCurrentRoute */ public function testGetCurrentRouteRedirectDbStructure(): void { unset($_POST['route']); unset($_GET['route']); $_GET['db'] = 'testDB'; self::assertSame('/database/structure', Routing::getCurrentRoute()); } /** * Test for Routing::getCurrentRoute */ public function testGetCurrentRouteRedirectSql(): void { $_GET['db'] = 'testDB'; $_GET['table'] = 'tableTest'; self::assertSame('/sql', Routing::getCurrentRoute()); } }