Passed
Pull Request — master (#17)
by Pavel
10:01
created

CountControllerTest::testRelationCriteria()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
3
namespace ScayTrase\Api\Cruds\Tests\Controller;
4
5
use ScayTrase\Api\Cruds\Tests\AbstractDbAwareTest;
6
use ScayTrase\Api\Cruds\Tests\Fixtures\Common\Entity\MyEntity;
7
use ScayTrase\Api\Cruds\Tests\Unit\StaticDbTestTrait;
8
9
class CountControllerTest extends AbstractDbAwareTest
10
{
11
    use StaticDbTestTrait;
12
13
    public function testEmptyCriteria()
14
    {
15
        $this->createEntities();
16
        $this->doTest([], 2);
17
    }
18
19
    public function testRelationCriteria()
20
    {
21
        $parentId = $this->createEntities();
22
        $this->doTest(
23
            [
24
                'parent' => $parentId,
25
            ],
26
            1
27
        );
28
    }
29
30
    /**
31
     * @param $criteria
32
     *
33
     * @return null|\Symfony\Component\HttpFoundation\Response
34
     */
35
    protected function doRequest($criteria)
36
    {
37
        $client = self::createClient();
38
        $client->request(
39
            'GET',
40
            '/api/entity/my-entity/count',
41
            [
42
                'criteria' => $criteria,
43
            ],
44
            [],
45
            ['HTTP_CONTENT_TYPE' => 'application/json']
46
        );
47
48
        return $client->getResponse();
49
    }
50
51
    private function doTest(array $criteria, $count)
52
    {
53
        $response = $this->doRequest($criteria);
54
55
        self::assertTrue($response->isSuccessful());
56
        $data = json_decode($response->getContent());
57
58
        self::assertEquals(JSON_ERROR_NONE, json_last_error());
59
        self::assertEquals($count, $data);
60
    }
61
62
    private function createEntities()
63
    {
64
        $em     = self::getEntityManager();
65
        $entity = new MyEntity('my-test-secret');
66
        $em->persist($entity);
67
        $parent = new MyEntity('non-recursing-entity');
68
        $em->persist($parent);
69
        $entity->setParent($parent);
70
        $em->flush();
71
        $em->clear();
72
73
        return $parent->getId();
74
    }
75
76
}
77