getProperty( 'cache' )->setValue( null, null ); // Reset Schema Registry singleton. $sr = new ReflectionClass( WPDO_Schema_Registry::class ); $sr->getProperty( 'instance' )->setValue( null, null ); $GLOBALS['_wp_options'] = array(); } // ── entity_bridge_owns ──────────────────────────────────────────────────── public function test_entity_bridge_owns_returns_false_when_mode_manager_absent(): void { // WPDO_Mode_Manager is not defined in unit test bootstrap → returns false. $this->assertFalse( WPDO_Routing_Predicate::entity_bridge_owns( 'hp_price' ) ); } public function test_entity_bridge_owns_caches_result(): void { $first = WPDO_Routing_Predicate::entity_bridge_owns( 'hp_featured' ); $second = WPDO_Routing_Predicate::entity_bridge_owns( 'hp_featured' ); $this->assertSame( $first, $second ); } public function test_flush_cache_clears_entity_bridge_cache(): void { WPDO_Routing_Predicate::entity_bridge_owns( 'some_key' ); WPDO_Routing_Predicate::flush_cache(); $ref = new ReflectionClass( WPDO_Routing_Predicate::class ); $cache = $ref->getProperty( 'entity_bridge_cache' )->getValue( null ); $this->assertEmpty( $cache ); } // ── should_write_to_zone ────────────────────────────────────────────────── public function test_should_write_to_zone_returns_false_when_module_idle(): void { $this->assertFalse( WPDO_Routing_Predicate::should_write_to_zone( 'hp_listing', 'hot' ) ); } public function test_should_write_to_zone_returns_true_when_dual_write(): void { WPDO_Feature_Flags::set( 'hot_hp_listing', 'dual_write' ); $this->assertTrue( WPDO_Routing_Predicate::should_write_to_zone( 'hp_listing', 'hot' ) ); } public function test_should_write_to_zone_returns_false_when_only_cold_active(): void { WPDO_Feature_Flags::set( 'cold_hp_listing', 'dual_write' ); $this->assertFalse( WPDO_Routing_Predicate::should_write_to_zone( 'hp_listing', 'hot' ) ); } // ── should_read_from_zone ───────────────────────────────────────────────── public function test_should_read_from_zone_returns_false_when_not_cutover(): void { WPDO_Feature_Flags::set( 'hot_hp_listing', 'dual_write' ); $this->assertFalse( WPDO_Routing_Predicate::should_read_from_zone( 'hp_listing', 'hot' ) ); } public function test_should_read_from_zone_returns_true_when_cutover(): void { WPDO_Feature_Flags::set( 'hot_hp_listing', 'cutover' ); $this->assertTrue( WPDO_Routing_Predicate::should_read_from_zone( 'hp_listing', 'hot' ) ); } // ── should_query_from_zone ──────────────────────────────────────────────── public function test_should_query_from_zone_returns_false_when_idle(): void { $this->assertFalse( WPDO_Routing_Predicate::should_query_from_zone( 'hp_listing', 'hot' ) ); } public function test_should_query_from_zone_returns_true_when_cutover(): void { WPDO_Feature_Flags::set( 'hot_hp_listing', 'cutover' ); $this->assertTrue( WPDO_Routing_Predicate::should_query_from_zone( 'hp_listing', 'hot' ) ); } }