assertSame( 'idle', WPDO_Feature_Flags::get( 'comment_hp_favorite' ) ); $this->assertFalse( WPDO_Feature_Flags::is_query_active( 'comment_hp_favorite' ) ); foreach ( array( 'dual_write', 'backfill', 'verify' ) as $state ) { WPDO_Feature_Flags::set( 'comment_hp_favorite', $state ); // Reads still go to legacy until cutover. $this->assertFalse( WPDO_Feature_Flags::is_query_active( 'comment_hp_favorite' ), "State $state should not be query-active yet" ); } WPDO_Feature_Flags::set( 'comment_hp_favorite', 'cutover' ); $this->assertTrue( WPDO_Feature_Flags::is_query_active( 'comment_hp_favorite' ) ); WPDO_Feature_Flags::set( 'comment_hp_favorite', 'cleanup' ); $this->assertTrue( WPDO_Feature_Flags::is_query_active( 'comment_hp_favorite' ) ); WPDO_Feature_Flags::set( 'comment_hp_favorite', 'complete' ); $this->assertTrue( WPDO_Feature_Flags::is_query_active( 'comment_hp_favorite' ) ); } public function test_cron_optimizer_respects_module_state(): void { WPDO_HivePress_Cron_Optimizer::reset_for_tests(); // Module idle → optimizer must not query. WPDO_Feature_Flags::set( 'hot_hp_listing', 'idle' ); $count = WPDO_HivePress_Cron_Optimizer::maybe_run(); $this->assertSame( 0, $count, 'Optimizer must short-circuit when module is idle.' ); } }