Completed
Push — master ( 6cc2de...ecdd96 )
by Adrien
02:40
created

testDefaultFieldResolver()

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
c 0
b 0
f 0
eloc 5
nc 1
nop 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GraphQLTests\Doctrine;
6
7
use GraphQL\Doctrine\DefaultFieldResolver;
8
use GraphQL\Doctrine\Definition\EntityID;
9
use GraphQL\Type\Definition\ResolveInfo;
10
use GraphQLTests\Doctrine\Blog\Model\Special\IgnoredGetter;
11
12
class DefaultFieldResolverTest extends \PHPUnit\Framework\TestCase
13
{
14
    public function providerDefaultFieldResolver(): array
15
    {
16
        $entityID = new class() extends EntityID {
17
            public function __construct()
18
            {
19
            }
20
21
            public function getEntity()
22
            {
23
                return 'real entity';
24
            }
25
        };
26
27
        return [
28
            [null, 'privateProperty'],
29
            [null, 'protectedProperty'],
30
            ['publicProperty', 'publicProperty'],
31
            [null, 'private'],
32
            [null, 'protected'],
33
            ['getPublic', 'public'],
34
            [['real entity', 2, ['foo']], 'publicWithArgs', ['arg2' => 2, 'arg1' => $entityID]],
35
            [null, 'nonExisting'],
36
            [null, '__call'],
37
            [true, 'isValid'],
38
            [true, 'hasMoney'],
39
        ];
40
    }
41
42
    /**
43
     * @dataProvider providerDefaultFieldResolver
44
     *
45
     * @param mixed $expected
46
     * @param string $fieldName
47
     * @param null|array $args
48
     */
49
    public function testDefaultFieldResolver($expected, string $fieldName, ?array $args = null): void
50
    {
51
        $object = new IgnoredGetter();
52
53
        $resolver = new DefaultFieldResolver();
54
        $info = new ResolveInfo(['fieldName' => $fieldName]);
55
        $actual = $resolver($object, $args, null, $info);
56
        self::assertSame($expected, $actual);
57
    }
58
59
    public function testDefaultFieldResolverOnArray(): void
60
    {
61
        $array = [
62
            'foo' => 'bar',
63
        ];
64
65
        $resolver = new DefaultFieldResolver();
66
        $info = new ResolveInfo(['fieldName' => 'foo']);
67
        $actual = $resolver($array, null, null, $info);
68
        self::assertSame('bar', $actual);
69
    }
70
}
71