GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 243f13...a9f992 )
by Simone
03:07
created

QueryBuilderFactoryTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 139
Duplicated Lines 0 %

Importance

Changes 5
Bugs 2 Features 1
Metric Value
wmc 7
c 5
b 2
f 1
dl 0
loc 139
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A testProvideOneSingleResult() 0 14 1
A setUp() 0 9 1
A testSampleQueryMakedWithQueryBuilderFactory() 0 16 1
A testFiltersMustContainsAlsoFieldEquality() 0 23 1
B testOneToManyQueryMakedHandly() 0 26 1
B testCanBuildQueriesUsingOrOperator() 0 26 1
A testThrowMissingFiltersExceptionsWheneverFiltersAreMissing() 0 4 1
1
<?php
2
3
namespace Mado\QueryBundle\Tests\Objects;
4
5
use Mado\QueryBundle\Queries\QueryBuilderFactory;
6
use PHPUnit\Framework\TestCase;
7
8
class QueryBuilderFactoryTest extends TestCase
9
{
10
    public function setUp()
11
    {
12
        $this->manager = \Doctrine\ORM\EntityManager::create(array(
13
            'driver' => 'pdo_sqlite',
14
            'path' => __DIR__ . '/../../data/db.sqlite',
15
        ),
16
        \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(
17
            array(__DIR__."/src"),
18
            true
19
        ));
20
    }
21
22
    public function testProvideOneSingleResult()
23
    {
24
        $queryBuilderFactory = new QueryBuilderFactory($this->manager);
25
        $queryBuilderFactory->setFields([ 'id' ]);
26
        $queryBuilderFactory->setAndFilters([ 'id|eq' => 33 ]);
27
        $queryBuilderFactory->createQueryBuilder(MySimpleEntity::class, 'e');
28
        $queryBuilderFactory->filter();
29
30
        $doctrineQueryBuilder = $queryBuilderFactory->getQueryBuilder();
31
        $doctrineQueryBuilder->setMaxResults(1);
32
33
        $this->assertEquals(
34
            "SELECT m0_.id AS id_0 FROM MySimpleEntity m0_ WHERE m0_.id = ? LIMIT 1",
35
            $doctrineQueryBuilder->getQuery()->getSql()
36
        );
37
    }
38
39
    public function testSampleQueryMakedWithQueryBuilderFactory()
40
    {
41
        $queryBuilderFactory = new QueryBuilderFactory($this->manager);
42
        $queryBuilderFactory->setFields([ 'id' ]);
43
        $queryBuilderFactory->setAndFilters([ 'id|eq' => 33 ]);
44
        $queryBuilderFactory->createQueryBuilder(MySimpleEntity::class, 'e');
45
        $queryBuilderFactory->filter();
46
47
        $this->assertEquals(
48
            "SELECT m0_.id AS id_0 FROM MySimpleEntity m0_ WHERE m0_.id = ?",
49
            $queryBuilderFactory->getQueryBuilder()->getQuery()->getSql()
50
        );
51
52
        $this->assertEquals(
53
            "SELECT e FROM Mado\QueryBundle\Tests\Objects\MySimpleEntity e WHERE e.id = :field_id",
54
            $queryBuilderFactory->getQueryBuilder()->getQuery()->getDql()
55
        );
56
    }
57
58
    public function testOneToManyQueryMakedHandly()
59
    {
60
        $queryBuilderFactory = new QueryBuilderFactory($this->manager);
61
        $queryBuilderFactory->setFields([ 'id' ]);
62
        $queryBuilderFactory->setRel([ 'group' ]);
63
        $queryBuilderFactory->setAndFilters([
64
            '_embedded.group.name|contains|1' => 'ad',
65
            '_embedded.group.name|contains|2' => 'ns',
66
            '_embedded.group.name|contains|3' => 'dm',
67
            '_embedded.group.name|contains|4' => 'mi',
68
        ]);
69
        $queryBuilderFactory->createQueryBuilder(User::class, 'e');
70
        $queryBuilderFactory->filter();
71
72
        $this->assertEquals(
73
            "SELECT" .
74
            " u0_.id AS id_0," .
75
            " u0_.username AS username_1," .
76
            " u0_.group_id AS group_id_2 " .
77
            "FROM User u0_ " .
78
            "INNER JOIN Group g1_ ON u0_.group_id = g1_.id " .
79
            "WHERE g1_.name LIKE ? " .
80
            "AND g1_.name LIKE ? " .
81
            "AND g1_.name LIKE ? " .
82
            "AND g1_.name LIKE ?",
83
            $queryBuilderFactory->getQueryBuilder()->getQuery()->getSql()
84
        );
85
    }
86
87
    public function testFiltersMustContainsAlsoFieldEquality()
88
    {
89
        $factory = new QueryBuilderFactory($this->manager);
90
91
        $validFilters = [
92
            'eq',
93
            'neq',
94
            'gt',
95
            'gte',
96
            'lt',
97
            'lte',
98
            'startswith',
99
            'contains',
100
            'notcontains',
101
            'endswith',
102
            'list',
103
            'nlist',
104
            'field_eq',
105
        ];
106
107
        $this->assertEquals(
108
            $validFilters,
109
            $factory->getAvailableFilters()
110
        );
111
    }
112
113
    public function testCanBuildQueriesUsingOrOperator()
114
    {
115
        $queryBuilderFactory = new QueryBuilderFactory($this->manager);
116
        $queryBuilderFactory->setFields([ 'id' ]);
117
        $queryBuilderFactory->setRel([ 'group' ]);
118
        $queryBuilderFactory->setOrFilters([
119
            '_embedded.group.name|contains|1' => 'ad',
120
            '_embedded.group.name|contains|2' => 'ns',
121
            '_embedded.group.name|contains|3' => 'dm',
122
            '_embedded.group.name|contains|4' => 'mi',
123
        ]);
124
        $queryBuilderFactory->createQueryBuilder(User::class, 'e');
125
        $queryBuilderFactory->filter();
126
127
        $this->assertEquals(
128
            "SELECT" .
129
            " u0_.id AS id_0," .
130
            " u0_.username AS username_1," .
131
            " u0_.group_id AS group_id_2 " .
132
            "FROM User u0_ " .
133
            "INNER JOIN Group g1_ ON u0_.group_id = g1_.id " .
134
            "WHERE g1_.name LIKE ? " .
135
            "OR g1_.name LIKE ? " .
136
            "OR g1_.name LIKE ? " .
137
            "OR g1_.name LIKE ?",
138
            $queryBuilderFactory->getQueryBuilder()->getQuery()->getSql()
139
        );
140
    }
141
142
    /** @expectedException \Mado\QueryBundle\Exceptions\MissingFiltersException */
143
    public function testThrowMissingFiltersExceptionsWheneverFiltersAreMissing()
144
    {
145
        $queryBuilderFactory = new QueryBuilderFactory($this->manager);
146
        $queryBuilderFactory->filter();
147
    }
148
}
149
150
/** @Entity() */
151
class MySimpleEntity
152
{
153
    /** @Id @Column(type="integer") */
154
    private $id;
155
}
156
157
/** @Entity() */
158
class User
159
{
160
    /** @Id @Column(type="integer") */
161
    private $id;
162
    /** @Column(type="string") */
163
    private $username;
164
    /** @ManyToOne(targetEntity="Group", inversedBy="member") */
165
    private $group;
166
}
167
168
/** @Entity() */
169
class Group
170
{
171
    /** @Id @Column(type="integer") */
172
    private $id;
173
    /** @Column(type="string") */
174
    private $name;
175
    /** @OneToMany(targetEntity="User", mappedBy="member") */
176
    private $members;
177
}
178