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); } public function test_route_uses_main_page_alt_term_meta_for_root_url(): void { \Brain\Monkey\Functions\when('is_admin')->justReturn(false); $_SERVER['REQUEST_URI'] = '/tyumen/'; \Brain\Monkey\Functions\when('get_terms')->justReturn([11 => 'tyumen']); $term = new \WP_Term(); $term->term_id = 11; $term->slug = 'tyumen'; \Brain\Monkey\Functions\when('get_term_by')->justReturn($term); \Brain\Monkey\Functions\when('get_field')->alias(function ($name, $where = null) { if ($name === 'main_town_slug') return 'spb'; if ($name === 'page_no_rep') return false; if ($name === 'main_page_alt' && $where === 'town_11') return 555; return false; }); \Brain\Monkey\Functions\when('get_post')->justReturn((object) ['ID' => 555]); \Brain\Monkey\Functions\when('status_header')->justReturn(null); Router::route(); self::assertInstanceOf(\WP_Query::class, $GLOBALS['wp_query']); self::assertSame(555, $GLOBALS['wp_query']->constructor_args['page_id']); self::assertSame('tyumen', $GLOBALS['wp_query']->constructor_args['town']); self::assertTrue($GLOBALS['wp_query']->is_front_page); self::assertTrue($GLOBALS['wp_query']->is_page); } }