Skip to content

Commit 94c9864

Browse files
committed
tests was improved
1 parent c5648ec commit 94c9864

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tests/RouterTest.php

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use PHPUnit\Framework\TestCase;
99
use Psr\Http\Server\MiddlewareInterface;
1010
use Psr\Http\Server\RequestHandlerInterface;
11+
use Sunrise\Http\Router\Event\RouteEvent;
1112
use Sunrise\Http\Router\Exception\InvalidArgumentException;
1213
use Sunrise\Http\Router\Exception\MethodNotAllowedException;
1314
use Sunrise\Http\Router\Exception\PageNotFoundException;
@@ -19,6 +20,7 @@
1920
use Sunrise\Http\Router\Router;
2021
use Sunrise\Http\Message\ResponseFactory;
2122
use Sunrise\Http\ServerRequest\ServerRequestFactory;
23+
use Symfony\Component\EventDispatcher\EventDispatcher;
2224

2325
/**
2426
* Import functions
@@ -819,4 +821,74 @@ public function testMatchWithHosts() : void
819821
$router->match((new ServerRequestFactory)
820822
->createServerRequest('GET', 'http://localhost/ping'));
821823
}
824+
825+
/**
826+
* @return void
827+
*/
828+
public function testEventDispatcher() : void
829+
{
830+
$router = new Router();
831+
$this->assertNull($router->getEventDispatcher());
832+
833+
$eventDispatcher = new EventDispatcher();
834+
$router->setEventDispatcher($eventDispatcher);
835+
$this->assertSame($eventDispatcher, $router->getEventDispatcher());
836+
837+
$router->setEventDispatcher(null);
838+
$this->assertNull($router->getEventDispatcher());
839+
}
840+
841+
/**
842+
* @return void
843+
*/
844+
public function testRouteEvent() : void
845+
{
846+
$routes = [
847+
new Fixtures\Route(),
848+
new Fixtures\Route(),
849+
new Fixtures\Route(),
850+
];
851+
852+
$request = (new ServerRequestFactory)
853+
->createServerRequest(
854+
$routes[1]->getMethods()[1],
855+
$routes[1]->getPath()
856+
);
857+
858+
$eventDispatcher = new EventDispatcher();
859+
$eventDispatcher->addListener(RouteEvent::NAME, function (RouteEvent $event) use ($routes, $request) {
860+
$this->assertSame($routes[1]->getName(), $event->getRoute()->getName());
861+
$this->assertSame($request, $event->getRequest());
862+
});
863+
864+
$router = new Router();
865+
$router->addRoute(...$routes);
866+
$router->setEventDispatcher($eventDispatcher);
867+
$router->run($request);
868+
}
869+
870+
/**
871+
* @return void
872+
*/
873+
public function testRouteEventOverrideRequest() : void
874+
{
875+
$route = new Fixtures\Route();
876+
877+
$request = (new ServerRequestFactory)
878+
->createServerRequest(
879+
$route->getMethods()[0],
880+
$route->getPath()
881+
);
882+
883+
$eventDispatcher = new EventDispatcher();
884+
$eventDispatcher->addListener(RouteEvent::NAME, function (RouteEvent $event) use ($request) {
885+
$event->setRequest($request->withAttribute('foo', 'bar'));
886+
$this->assertNotSame($request, $event->getRequest());
887+
});
888+
889+
$router = new Router();
890+
$router->addRoute($route);
891+
$router->setEventDispatcher($eventDispatcher);
892+
$router->handle($request);
893+
}
822894
}

0 commit comments

Comments
 (0)