• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

api-platform / core / 15133993414

20 May 2025 09:30AM UTC coverage: 26.313% (-1.2%) from 27.493%
15133993414

Pull #7161

github

web-flow
Merge e2c03d45f into 5459ba375
Pull Request #7161: fix(metadata): infer parameter string type from schema

0 of 2 new or added lines in 1 file covered. (0.0%)

11019 existing lines in 363 files now uncovered.

12898 of 49018 relevant lines covered (26.31%)

34.33 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

36.84
/src/Doctrine/Common/State/LinksHandlerLocatorTrait.php
1
<?php
2

3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <dunglas@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

12
declare(strict_types=1);
13

14
namespace ApiPlatform\Doctrine\Common\State;
15

16
use ApiPlatform\Metadata\Exception\RuntimeException;
17
use ApiPlatform\Metadata\Operation;
18
use Psr\Container\ContainerInterface;
19

20
/**
21
 * @internal
22
 */
23
trait LinksHandlerLocatorTrait
24
{
25
    private ?ContainerInterface $handleLinksLocator;
26

27
    private function getLinksHandler(Operation $operation): ?callable
28
    {
UNCOV
29
        if (!($options = $operation->getStateOptions()) || !$options instanceof Options) {
587✔
30
            return null;
×
31
        }
32

UNCOV
33
        $handleLinks = $options->getHandleLinks();
587✔
UNCOV
34
        if (\is_callable($handleLinks)) {
587✔
UNCOV
35
            return $handleLinks;
1✔
36
        }
37

UNCOV
38
        if (\is_array($handleLinks) && 2 === \count($handleLinks) && class_exists($handleLinks[0])) {
586✔
39
            [$className, $methodName] = $handleLinks;
×
40

41
            if (method_exists($className, $methodName)) {
×
42
                return $handleLinks;
×
43
            }
44

45
            $suggestedMethod = $this->findSimilarMethod($className, $methodName);
×
46

47
            throw new RuntimeException(\sprintf('Method "%s" does not exist in class "%s".%s', $methodName, $className, $suggestedMethod ? \sprintf(' Did you mean "%s"?', $suggestedMethod) : ''));
×
48
        }
49

UNCOV
50
        if ($this->handleLinksLocator && \is_string($handleLinks) && $this->handleLinksLocator->has($handleLinks)) {
586✔
UNCOV
51
            return [$this->handleLinksLocator->get($handleLinks), 'handleLinks'];
586✔
52
        }
53

54
        throw new RuntimeException(\sprintf('Could not find handleLinks service "%s"', $handleLinks));
×
55
    }
56

57
    private function findSimilarMethod(string $className, string $methodName): ?string
58
    {
59
        $methods = get_class_methods($className);
×
60

61
        $similarMethods = array_filter($methods, function ($method) use ($methodName) {
×
62
            return levenshtein($methodName, $method) <= 3;
×
63
        });
×
64

65
        return $similarMethods ? reset($similarMethods) : null;
×
66
    }
67
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc