createMock( TMDO_Entity_Adapter_Interface::class ) ); TMDO_Entity_Registry::register_adapter( 'user', $this->createMock( TMDO_Entity_Adapter_Interface::class ) ); } private function register_core(): void { TMDO_Post_Fields::register_entity_fields(); TMDO_Member_Fields::register_entity_fields(); } public function test_definitions_match_core_exactly(): void { $this->fresh_registry(); $this->register_core(); $core = array(); foreach ( self::GROUPS as $g ) { $core[ $g[1] ] = TMDO_Entity_Registry::get_group_fields( $g[0], $g[1] ); } $this->fresh_registry(); TMDO_HivePress_Entity_Groups::register_entity_fields(); foreach ( self::GROUPS as $g ) { $this->assertNotEmpty( $core[ $g[1] ], "core no longer registers {$g[1]}" ); $this->assertSame( $core[ $g[1] ], TMDO_Entity_Registry::get_group_fields( $g[0], $g[1] ), "{$g[0]}/{$g[1]} drifted from core" ); } } public function test_shared_keys_resolve_to_the_same_group_as_core(): void { // hp_status / hp_user / hp_view_count … appear in several post groups and // field_index is last-registered-wins, so registration order matters. $this->fresh_registry(); $this->register_core(); $core = array(); foreach ( self::GROUPS as $g ) { foreach ( TMDO_Entity_Registry::get_group_keys( $g[0], $g[1] ) as $key ) { $core[ $g[0] . ':' . $key ] = TMDO_Entity_Registry::get_field( $g[0], $key )['group']; } } $this->fresh_registry(); TMDO_HivePress_Entity_Groups::register_entity_fields(); foreach ( $core as $id => $group ) { list( $type, $key ) = explode( ':', $id, 2 ); $this->assertSame( $group, TMDO_Entity_Registry::get_field( $type, $key )['group'], $id ); } } public function test_registering_alongside_core_raises_no_collision(): void { $this->fresh_registry(); $this->register_core(); TMDO_HivePress_Entity_Groups::register_entity_fields(); ( new TMDO_HivePress_Core_Adapter() )->on_register_entity_fields(); $this->assertSame( array(), TMDO_Entity_Registry::get_collisions() ); } }