Completed
Push — master ( 842a08...9f23c0 )
by Adrien
07:47
created

DefaultFieldResolverTest.php$0 ➔ __isInitialized()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ApplicationTest\Api;
6
7
use Application\Api\DefaultFieldResolver;
8
use Application\Api\Schema;
9
use Application\Model\User;
10
use Doctrine\Common\Persistence\Proxy;
11
use Doctrine\ORM\EntityNotFoundException;
12
use GraphQL\Type\Definition\ObjectType;
13
use GraphQL\Type\Definition\ResolveInfo;
14
use PHPUnit\Framework\TestCase;
15
use stdClass;
16
17
class DefaultFieldResolverTest extends TestCase
18
{
19
    public function providerLoad(): array
20
    {
21
        $loadableClass = new class() implements Proxy {
22
            public function __load(): void
23
            {
24
            }
25
26
            public function __isInitialized(): void
27
            {
28
            }
29
        };
30
31
        $unLoadableClass = new class() implements Proxy {
32
            public function __load(): void
33
            {
34
                throw new EntityNotFoundException();
35
            }
36
37
            public function __isInitialized(): void
38
            {
39
            }
40
        };
41
42
        $object = new stdClass();
43
        $user = new User();
44
        $loadable = new $loadableClass();
45
        $unloadable = new $unLoadableClass();
46
47
        return [
48
            [null, null],
49
            [1, 1],
50
            ['foo', 'foo'],
51
            [$object, $object],
52
            [$user, $user],
53
            [$loadable, $loadable],
54
            [$unloadable, null],
55
        ];
56
    }
57
58
    /**
59
     * @dataProvider providerLoad
60
     *
61
     * @param mixed $value
62
     * @param mixed $expected
63
     */
64
    public function testLoad($value, $expected): void
65
    {
66
        $model = new class($value) {
67
            private $value;
68
69
            public function __construct($value)
70
            {
71
                $this->value = $value;
72
            }
73
74
            public function getField()
75
            {
76
                return $this->value;
77
            }
78
        };
79
80
        $resolve = new ResolveInfo('field', null, null, new ObjectType(['name' => 'foo']), [], new Schema(), [], null, null, []);
81
        $resolver = new DefaultFieldResolver();
82
        self::assertSame($expected, $resolver($model, [], [], $resolve));
83
    }
84
}
85