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

overblog / GraphQLBundle / 23208575639

17 Mar 2026 05:51PM UTC coverage: 98.553% (+0.007%) from 98.546%
23208575639

Pull #1241

github

web-flow
Merge 6e70843d8 into 7e9f36ef2
Pull Request #1241: resettable schemas, getCurrentSchemaName for TypeResolver, and IsPublic support for InputObject fields

44 of 44 new or added lines in 9 files covered. (100.0%)

53 existing lines in 9 files now uncovered.

4563 of 4630 relevant lines covered (98.55%)

78.11 hits per line

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

95.83
/src/Config/Parser/MetadataParser/TypeGuesser/TypeHintTypeGuesser.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Overblog\GraphQLBundle\Config\Parser\MetadataParser\TypeGuesser;
6

7
use ReflectionClass;
8
use ReflectionMethod;
9
use ReflectionNamedType;
10
use ReflectionParameter;
11
use ReflectionProperty;
12
use Reflector;
13

14
final class TypeHintTypeGuesser extends PhpTypeGuesser
15
{
16
    public function getName(): string
17
    {
18
        return 'Type Hint';
60✔
19
    }
20

21
    public function supports(Reflector $reflector): bool
22
    {
23
        return $reflector instanceof ReflectionProperty || $reflector instanceof ReflectionParameter || $reflector instanceof ReflectionMethod;
109✔
24
    }
25

26
    /**
27
     * @param ReflectionProperty|ReflectionParameter|ReflectionMethod $reflector
28
     */
29
    public function guessType(ReflectionClass $reflectionClass, Reflector $reflector, array $filterGraphQLTypes = []): ?string
30
    {
31
        $type = null;
109✔
32
        $hasDefaultValue = false;
109✔
33

34
        switch (true) {
35
            case $reflector instanceof ReflectionParameter:
109✔
36
                /** @var ReflectionParameter $reflector */
37
                $hasDefaultValue = $reflector->isDefaultValueAvailable();
106✔
38
                // no break
39
            case $reflector instanceof ReflectionProperty:
109✔
40
                /** @var ReflectionProperty $reflector */
41
                $type = $reflector->hasType() ? $reflector->getType() : null;
109✔
42

43
                break;
109✔
44
            case $reflector instanceof ReflectionMethod:
106✔
45
                /** @var ReflectionMethod $reflector */
46
                $type = $reflector->hasReturnType() ? $reflector->getReturnType() : null;
106✔
47
                break;
106✔
48
        }
49
        /** @var ReflectionNamedType|null $type */
50
        if (!$type) {
109✔
51
            throw new TypeGuessingException('No type-hint');
60✔
52
        }
53

54
        $sType = $type->getName();
109✔
55
        if ($type->isBuiltin()) {
109✔
56
            $gqlType = $this->resolveTypeFromPhpType($sType);
109✔
57
            if (null === $gqlType) {
109✔
UNCOV
58
                throw new TypeGuessingException(sprintf('No corresponding GraphQL type found for builtin type "%s"', $sType));
58✔
59
            }
60
        } else {
61
            $gqlType = $this->map->resolveType($sType, $filterGraphQLTypes);
106✔
62
            if (null === $gqlType) {
106✔
63
                throw new TypeGuessingException(sprintf('No corresponding GraphQL %s found for class "%s"', $filterGraphQLTypes ? implode(',', $filterGraphQLTypes) : 'object', $sType));
×
64
            }
65
        }
66
        $nullable = $hasDefaultValue || $type->allowsNull();
109✔
67

68
        return sprintf('%s%s', $gqlType, $nullable ? '' : '!');
109✔
69
    }
70
}
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

© 2026 Coveralls, Inc