diff --git a/tests/RouterTest.php b/tests/RouterTest.php index 19616cb..1842be8 100644 --- a/tests/RouterTest.php +++ b/tests/RouterTest.php @@ -35,4 +35,60 @@ final class RouterTest extends TestCase self::assertContains('town', $result); } + + public function test_route_skips_when_is_admin(): void + { + \Brain\Monkey\Functions\expect('get_terms')->never(); + \Brain\Monkey\Functions\when('is_admin')->justReturn(true); + + Router::route(); + + self::assertArrayNotHasKey('wp_query', $GLOBALS); + } + + public function test_route_skips_when_current_town_is_null(): void + { + \Brain\Monkey\Functions\expect('url_to_postid')->never(); + \Brain\Monkey\Functions\when('is_admin')->justReturn(false); + $_SERVER['REQUEST_URI'] = '/something-not-a-city/'; + \Brain\Monkey\Functions\when('get_terms')->justReturn([10 => 'spb']); + \Brain\Monkey\Functions\when('get_field')->justReturn(false); + + Router::route(); + + self::assertArrayNotHasKey('wp_query', $GLOBALS); + } + + public function test_route_skips_when_current_town_equals_main_town(): void + { + \Brain\Monkey\Functions\expect('url_to_postid')->never(); + \Brain\Monkey\Functions\when('is_admin')->justReturn(false); + $_SERVER['REQUEST_URI'] = '/spb/'; + \Brain\Monkey\Functions\when('get_terms')->justReturn([10 => 'spb']); + \Brain\Monkey\Functions\when('get_field')->alias(function ($name) { + if ($name === 'main_town_slug') return 'spb'; + return false; + }); + + Router::route(); + + self::assertArrayNotHasKey('wp_query', $GLOBALS); + } + + public function test_route_skips_when_path_not_routable(): void + { + \Brain\Monkey\Functions\expect('url_to_postid')->never(); + \Brain\Monkey\Functions\when('is_admin')->justReturn(false); + $_SERVER['REQUEST_URI'] = '/tyumen/privacy/'; + \Brain\Monkey\Functions\when('get_terms')->justReturn([11 => 'tyumen']); + \Brain\Monkey\Functions\when('get_field')->alias(function ($name) { + if ($name === 'main_town_slug') return 'spb'; + if ($name === 'page_no_rep') return [['link' => '/privacy/']]; + return false; + }); + + Router::route(); + + self::assertArrayNotHasKey('wp_query', $GLOBALS); + } }