test-specific-setup.php

<?php
/**
 * Special configurations to use for specific tests
 *
 * @var \Lia $lia
 */



$lia->hook(\Lia\Events::NoHttpRoutes->value,
    function(\Lia\Http\Request $request, \Lia\Http\Response $response){
        if ($request->url == '/custom-noroute-handler/'){
            $response->body = 'CUSTOM NO ROUTE HANDLER';
            $response->headers = [];
        }
    }
);

if ($_SERVER['REQUEST_URI'] == '/delete-default-noroute-handler/'){

    // delete existing event handlers for route-not-found
    foreach ($lia->events[\Lia\Events::NoHttpRoutes->value] as $index => $callable){
        if (is_array($callable) 
            && is_object($callable[0])
            && get_class($callable[0]) == \Lia\Addon\Router::class){
            unset($lia->events[\Lia\Events::NoHttpRoutes->value][$index]);
        }
        else if (!is_array($callable)) {
            unset($lia->events[\Lia\Events::NoHttpRoutes->value][$index]);
        }
    }
    $lia->events[\Lia\Events::NoHttpRoutes->value] = array_values($lia->events[\Lia\Events::NoHttpRoutes->value]);

    echo json_encode($lia->events[\Lia\Events::NoHttpRoutes->value]);

    return;
}

if ($_SERVER['REQUEST_URI'] == '/handle-multiple-routes/'){
    $lia->ready();
    $lia->addon('lia:router')->addRoute('/handle-multiple-routes/', 
        function(\Lia\Http\Route $route){
            echo 'first route';
        }
    );
    $lia->addon('lia:router')->addRoute('/handle-multiple-routes/', 
        function(\Lia\Http\Route $route){
            echo 'second route';
        }
    );

    $lia->hook(\Lia\Events::MultipleHttpRoutes->value, 
        function(\Lia\Http\Request $request, \Lia\Http\Response $response, array $routes){
            $responder = new \Lia\Http\Responder();
            if ($_GET['route_index'] == 0){
                $responder->respond_to_route($request, $response, $routes[0]);
            } else if ($_GET['route_index'] == 1){
                $responder->respond_to_route($request, $response, $routes[1]);
            }
        }
    );
}