testing brought in

This commit is contained in:
2026-03-17 01:35:40 -07:00
parent 39334d8e4a
commit 4f996eb7d2
20 changed files with 641 additions and 192 deletions

View File

@@ -0,0 +1,118 @@
<?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);
}
}