never(); \Brain\Monkey\Functions\when('is_admin')->justReturn(false); $_SERVER['REQUEST_URI'] = '/spb/about/'; \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; }); Redirect::handle(); self::assertTrue(true); } public function test_handle_skips_when_post_not_set(): void { \Brain\Monkey\Functions\expect('wp_safe_redirect')->never(); \Brain\Monkey\Functions\when('is_admin')->justReturn(false); $_SERVER['REQUEST_URI'] = '/about/'; \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'; return false; }); unset($GLOBALS['post']); Redirect::handle(); self::assertTrue(true); } public function test_handle_skips_when_url_already_has_town_prefix(): void { \Brain\Monkey\Functions\expect('wp_safe_redirect')->never(); \Brain\Monkey\Functions\when('is_admin')->justReturn(false); $_SERVER['REQUEST_URI'] = '/tyumen/about/'; \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'; return false; }); $GLOBALS['post'] = (object) ['ID' => 84]; Redirect::handle(); self::assertTrue(true); } public function test_handle_redirects_when_post_is_page_unic_clone_without_prefix(): void { \Brain\Monkey\Functions\when('is_admin')->justReturn(false); $_SERVER['REQUEST_URI'] = '/about/'; \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) { if ($name === 'main_town_slug') return 'spb'; if ($name === 'page_unic') return [ ['town' => 11, 'page_old' => 42, 'page_new' => 84], ]; return false; }); $GLOBALS['post'] = (object) ['ID' => 84]; \Brain\Monkey\Functions\when('get_permalink')->justReturn('https://site.com/about/'); \Brain\Monkey\Functions\expect('wp_safe_redirect') ->once() ->with('/tyumen/about/', 301) ->andThrow(new \RuntimeException('redirect-called')); try { Redirect::handle(); self::fail('Expected redirect to be issued'); } catch (\RuntimeException $e) { self::assertSame('redirect-called', $e->getMessage()); } } }