feat(wpmc S4): Router scaffold + query_vars filter for town
This commit is contained in:
@@ -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.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user