Passed
Pull Request — master (#63)
by Mark
23:06
created

AttributeReaderAdapterTest::setUp()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 12
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GraphQLTests\Doctrine\Factory\MetadataReader;
6
7
use Doctrine\ORM\Mapping\Column;
8
use Doctrine\ORM\Mapping\Driver\AttributeDriver;
9
use Doctrine\ORM\Mapping\Driver\AttributeReader;
10
use Doctrine\ORM\Mapping\Entity;
11
use GraphQL\Doctrine\Factory\MetadataReader\AttributeReaderAdapter;
12
use GraphQLTests\Doctrine\AttributeBlog\Model\Post;
13
use GraphQLTests\Doctrine\TypesTrait;
14
use PHPUnit\Framework\TestCase;
15
use ReflectionClass;
16
use ReflectionMethod;
17
use ReflectionProperty;
18
use RuntimeException;
19
20
class AttributeReaderAdapterTest extends TestCase
21
{
22
    use TypesTrait {
23
        setUpWithAttributes as typeSetup;
24
    }
25
26
    private AttributeReaderAdapter $chainAdapter;
27
28
    protected function setUp(): void
29
    {
30
        $this->typeSetup();
31
32
        $config = $this->entityManager->getConfiguration();
33
        $mappingDriver = $config->getMetadataDriverImpl();
34
        if (!$mappingDriver instanceof AttributeDriver) {
35
            throw new RuntimeException('invalid runtime configuration: expected the metadata driver to be a ' . AttributeDriver::class);
36
        }
37
        /** @var AttributeReader $attributeReader */
38
        $attributeReader = $mappingDriver->getReader();
39
        $this->chainAdapter = new AttributeReaderAdapter($attributeReader);
40
    }
41
42
    public function testGetClassAnnotations(): void
43
    {
44
        self::assertNotEmpty($this->chainAdapter->getClassAnnotations(new ReflectionClass(Post::class)));
45
    }
46
47
    public function testGetClassAnnotation(): void
48
    {
49
        self::assertNotNull($this->chainAdapter->getClassAnnotation(new ReflectionClass(Post::class), Entity::class));
50
    }
51
52
    public function testGetMethodAnnotations(): void
53
    {
54
        self::assertNotEmpty($this->chainAdapter->getMethodAnnotations(new ReflectionMethod(Post::class, 'getBody')));
55
    }
56
57
    public function testGetMethodAnnotation(): void
58
    {
59
        self::assertNotNull($this->chainAdapter->getMethodAnnotations(new ReflectionMethod(Post::class, 'getBody')));
60
    }
61
62
    public function testGetPropertyAnnotations(): void
63
    {
64
        self::assertNotEmpty($this->chainAdapter->getPropertyAnnotations(new ReflectionProperty(Post::class, 'body')));
65
    }
66
67
    public function testGetPropertyAnnotation(): void
68
    {
69
        self::assertNotNull($this->chainAdapter->getPropertyAnnotation(
70
            new ReflectionProperty(Post::class, 'body'),
71
            Column::class
72
        ));
73
    }
74
}
75