feat(wpmc S4): Router scaffold + query_vars filter for town

This commit is contained in:
Vladimir Bryzgalov
2026-05-16 19:57:12 +05:00
parent fc21fd1f06
commit d30a039a73
2 changed files with 62 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace WPMultiCity;
final class Router
{
public static function register(): void
{
\add_action('wp', [self::class, 'route'], 9999);
\add_filter('query_vars', [self::class, 'add_town_query_var']);
}
public static function add_town_query_var(array $vars): array
{
$vars[] = 'town';
return $vars;
}
public static function route(): void
{
// Implementation in Tasks 10-13.
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
namespace WPMultiCity\Tests;
use WPMultiCity\Router;
final class RouterTest extends TestCase
{
public function test_register_attaches_wp_action_at_priority_9999(): void
{
Router::register();
self::assertSame(
9999,
has_action('wp', [Router::class, 'route']),
'Router::register() must hook wp action at priority 9999'
);
}
public function test_register_attaches_query_vars_filter(): void
{
Router::register();
self::assertNotFalse(
has_filter('query_vars', [Router::class, 'add_town_query_var']),
'Router::register() must hook query_vars filter'
);
}
public function test_add_town_query_var_appends_town(): void
{
$vars = ['p', 'page_id'];
$result = Router::add_town_query_var($vars);
self::assertContains('town', $result);
}
}