forRepositoryMethod( $repositoryResult, $method ); // Then $this->assertInstanceOf($strategyClass, $function); } public static function userDefinedPrecedenceProvider(): array { return [ ['R', 'save', 'UPDATE', '', null, [], UserDefinedQuery::class], ['R', 'delete', 'DELETE', '', null, [], UserDefinedQuery::class], ['R', 'findById', 'SELECT', '', null, [], UserDefinedQuery::class], ['R', 'findAll', 'SELECT', '', null, [], UserDefinedQuery::class], ]; } #[DataProvider('userDefinedPrecedenceProvider')] public function testUserDefinedQueryHasAlwaysPrecedence( string $repName, string $name, ?string $query, string $returnType, ?string $listType, array $params, string $strategyClass ): void { // Given $method = new RepositoryMethod( query: $query, returnType: $returnType, returnsNullable: true, returnListType: $listType, name: $name, parameters: $params ); $repositoryResult = new RepositoryResult( '', [$method] ); // When $function = (new ResolutionStrategyFactory())->forRepositoryMethod( $repositoryResult, $method ); // Then $this->assertInstanceOf($strategyClass, $function); } }