Failed Conditions
Push — master ( 05fc61...964283 )
by Adrien
02:24
created

ReaderTest::testGetPropertyAttribute()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GraphQLTests\Doctrine\Attribute\Reader;
6
7
use GraphQL\Doctrine\Attribute\Argument;
8
use GraphQL\Doctrine\Attribute\Field;
9
use GraphQL\Doctrine\Attribute\Filter;
10
use GraphQL\Doctrine\Attribute\FilterGroupCondition;
11
use GraphQL\Doctrine\Attribute\Reader\Reader;
12
use GraphQL\Doctrine\Attribute\Sorting;
13
use GraphQLTests\Doctrine\Blog\Model\AbstractModel;
14
use GraphQLTests\Doctrine\Blog\Model\Post;
15
use GraphQLTests\Doctrine\Blog\Model\User;
16
use PHPUnit\Framework\TestCase;
17
use ReflectionClass;
18
use ReflectionMethod;
19
use ReflectionProperty;
20
21
class ReaderTest extends TestCase
22
{
23
    private Reader $reader;
24
25
    protected function setUp(): void
26
    {
27
        $this->reader = new Reader();
28
    }
29
30
    public function testGetRecursiveClassAttributesWithFilter(): void
31
    {
32
        $actual = $this->reader->getRecursiveClassAttributes(new ReflectionClass(Post::class), Filter::class);
33
34
        self::assertCount(2, $actual);
35
        self::assertCount(1, $actual[Post::class]);
36
        self::assertContainsOnlyInstancesOf(Filter::class, $actual[Post::class]);
37
        self::assertCount(1, $actual[AbstractModel::class]);
38
        self::assertContainsOnlyInstancesOf(Filter::class, $actual[AbstractModel::class]);
39
    }
40
41
    public function testGetRecursiveClassAttributesWithSorting(): void
42
    {
43
        $actual = $this->reader->getRecursiveClassAttributes(new ReflectionClass(Post::class), Sorting::class);
44
45
        self::assertCount(2, $actual);
46
        self::assertCount(2, $actual[Post::class]);
47
        self::assertContainsOnlyInstancesOf(Sorting::class, $actual[Post::class]);
48
        self::assertCount(1, $actual[AbstractModel::class]);
49
        self::assertContainsOnlyInstancesOf(Sorting::class, $actual[AbstractModel::class]);
50
    }
51
52
    public function testGetClassAttribute(): void
53
    {
54
        self::assertInstanceOf(
55
            Filter::class,
56
            $this->reader->getAttribute(new ReflectionClass(Post::class), Filter::class)
57
        );
58
    }
59
60
    public function testGetPropertyAttribute(): void
61
    {
62
        self::assertInstanceOf(
63
            FilterGroupCondition::class,
64
            $this->reader->getAttribute(new ReflectionProperty(Post::class, 'status'), FilterGroupCondition::class)
65
        );
66
    }
67
68
    public function testGetMethodAttribute(): void
69
    {
70
        self::assertInstanceOf(
71
            Field::class,
72
            $this->reader->getAttribute(new ReflectionMethod(Post::class, 'getBody'), Field::class)
73
        );
74
    }
75
76
    public function testGetParameterAttribute(): void
77
    {
78
        self::assertInstanceOf(
79
            Argument::class,
80
            $this->reader->getAttribute((new ReflectionMethod(User::class, 'getPosts'))->getParameters()[0], Argument::class)
81
        );
82
    }
83
}
84