fix(wpmc 1.0.1): guard ACF helpers with did_action('acf/init')
Add private Helpers::acf_ready() that checks did_action('acf/init') > 0,
then guard the five ACF-dependent methods (alt_get_field, index_town_alt_page_id,
main_town_slug, page_unic_swap, is_routable_path) so they return safe defaults
(null/true) before ACF initialises. Fixes the acf_get_value "called too early"
notice triggered when home_url filter fires before acf/init.
Update existing tests in HelpersTest, LinkFilterTest, RedirectTest, RouterTest
to stub did_action => 1 where ACF-ready behaviour is expected. Add four new
guard tests covering before/after acf/init for main_town_slug and is_routable_path.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -48,6 +48,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_skips_when_current_town_is_null(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\expect('url_to_postid')->never();
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/something-not-a-city/';
|
||||
@@ -61,6 +62,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_skips_when_current_town_equals_main_town(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\expect('url_to_postid')->never();
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/spb/';
|
||||
@@ -77,6 +79,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_skips_when_path_not_routable(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\expect('url_to_postid')->never();
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/privacy/';
|
||||
@@ -94,6 +97,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_uses_main_page_alt_term_meta_for_root_url(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/';
|
||||
\Brain\Monkey\Functions\when('get_terms')->justReturn([11 => 'tyumen']);
|
||||
@@ -123,6 +127,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_falls_back_to_index_town_alt_option(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/';
|
||||
\Brain\Monkey\Functions\when('get_terms')->justReturn([11 => 'tyumen']);
|
||||
@@ -148,6 +153,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_does_not_install_query_when_neither_main_nor_fallback_set(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\expect('get_post')->never();
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/';
|
||||
@@ -169,6 +175,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_resolves_internal_page_via_url_to_postid(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/about/';
|
||||
\Brain\Monkey\Functions\when('get_terms')->justReturn([11 => 'tyumen']);
|
||||
@@ -193,6 +200,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_applies_page_unic_swap_when_clone_exists(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/about/';
|
||||
\Brain\Monkey\Functions\when('get_terms')->justReturn([11 => 'tyumen']);
|
||||
@@ -220,6 +228,7 @@ final class RouterTest extends TestCase
|
||||
|
||||
public function test_route_does_not_install_query_when_url_to_postid_returns_zero(): void
|
||||
{
|
||||
\Brain\Monkey\Functions\stubs(['did_action' => 1]);
|
||||
\Brain\Monkey\Functions\expect('get_post')->never();
|
||||
\Brain\Monkey\Functions\when('is_admin')->justReturn(false);
|
||||
$_SERVER['REQUEST_URI'] = '/tyumen/unknown/';
|
||||
|
||||
Reference in New Issue
Block a user