119 lines
3.6 KiB
PHP
119 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace CheeseCake\Test\TestCase\View\Helper;
|
|
|
|
use Cake\Http\ServerRequest;
|
|
use Cake\Routing\Route\DashedRoute;
|
|
use Cake\Routing\RouteBuilder;
|
|
use Cake\Routing\Router;
|
|
use Cake\TestSuite\IntegrationTestTrait;
|
|
use Cake\TestSuite\TestCase;
|
|
use Cake\View\View;
|
|
use CheeseCake\View\Helper\ActiveLinkHelper;
|
|
|
|
class ActiveLinkHelperTest extends TestCase {
|
|
|
|
use IntegrationTestTrait;
|
|
public function setUp(): void {
|
|
parent::setUp();
|
|
|
|
// $this->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);
|
|
}
|
|
|
|
}
|