loadRoutes(); $routeBuilder = Router::createRouteBuilder('/'); $routeBuilder->scope('/', function (RouteBuilder $routes) { $routes->setRouteClass(DashedRoute::class); $routes->get( '/', ['controller' => 'Tests', 'action' => 'index'], ); $routes->get( '/admin/users', ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], ); $routes->get( '/admin/users/view', ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'view'], ); }); } /** * @return void */ public function testLinkMatchesString(): void { $request = new ServerRequest(['url' => '/']); $view = new View($request); $helper = new ActiveLinkHelper($view); $result = $helper->link('goto', '/', [ 'target' => '/', 'activeClass' => 'awesome-active-class', ]); $this->assertStringContainsString('awesome-active-class', $result); } /** * @return void */ public function testLinkMatchesArrayFromCurrent(): void { $request = new ServerRequest(); $view = new View($request); $helper = new ActiveLinkHelper($view); // matches specific controller action $specificActionResult = $helper->link('goto', ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], [ 'target' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], 'current' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], 'activeClass' => 'awesome-active-class', ]); $this->assertStringContainsString('awesome-active-class', $specificActionResult); // match whole controller $wholeControllerResult = $helper->link('goto', [ 'plugin' => null, 'prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index', ], [ 'current' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], 'target' => ['prefix' => 'Admin', 'controller' => 'Users'], 'activeClass' => 'awesome-active-class', ]); $this->assertStringContainsString('awesome-active-class', $wholeControllerResult); // match whole prefix $wholePrefixResult = $helper->link('goto', [ 'prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index', ], [ 'current' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], 'target' => ['prefix' => 'Admin'], 'activeClass' => 'awesome-active-class', ]); $this->assertStringContainsString('awesome-active-class', $wholePrefixResult); } /** * @return void */ public function testLinkDoesNotMatchArray(): void { $request = new ServerRequest(); $request = $request->withParam('prefix', 'Admin'); $request = $request->withParam('controller', 'Users'); $request = $request->withParam('action', 'index'); $view = new View($request); $helper = new ActiveLinkHelper($view); // matches specific controller action $specificActionResult = $helper->link('goto', ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], [ 'target' => ['controller' => 'Events', 'action' => 'index'], 'current' => ['prefix' => 'Admin', 'controller' => 'Users', 'action' => 'index'], 'activeClass' => 'awesome-active-class', 'class' => 'link-class', ]); $this->assertStringNotContainsString('awesome-active-class', $specificActionResult); } }