Completed
Push — master ( f78604...98e267 )
by Pavel
04:30
created

SearchControllerTest::testGetAction()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 43
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 43
rs 8.8571
cc 1
eloc 30
nc 1
nop 1
1
<?php
2
3
namespace ScayTrase\Api\Cruds\Tests\Controller;
4
5
use ScayTrase\Api\Cruds\Tests\AbstractCrudsWebTest;
6
use ScayTrase\Api\Cruds\Tests\Fixtures\Common\Entity\MyEntity;
7
8
class SearchControllerTest extends AbstractCrudsWebTest
9
{
10
    /**
11
     * @dataProvider getKernelClasses
12
     *
13
     * @param $kernel
14
     */
15
    public function testSearchAction($kernel)
16
    {
17
        self::createAndBootKernel($kernel);
18
        self::configureDb();
19
20
        $em     = self::getEntityManager();
21
        $entity = new MyEntity('my-test-secret');
22
        $em->persist($entity);
23
        $parent = new MyEntity('non-recursing-entity');
24
        $em->persist($parent);
25
        $entity->setParent($parent);
26
        $em->flush();
27
        $em->clear();
28
29
        $client = self::createClient();
30
        $client->request(
31
            'GET',
32
            '/api/entity/my-entity/search',
33
            [
34
                'criteria' => ['doctrine' => ['id' => $entity->getId()]],
35
            ],
36
            [],
37
            ['HTTP_CONTENT_TYPE' => 'application/json']
38
        );
39
        $response = $client->getResponse();
40
41
        self::assertTrue($response->isSuccessful());
42
        $data = json_decode($response->getContent());
43
44
        self::assertEquals(JSON_ERROR_NONE, json_last_error());
45
46
        self::assertInternalType('array', $data);
47
        self::assertCount(1, $data);
48
49
        $data = array_shift($data);
50
51
        self::assertInstanceOf(\stdClass::class, $data);
52
        self::assertSame($entity->getId(), $data->id);
53
        self::assertSame('defaults', $data->public_api_field);
54
        self::assertObjectNotHasAttribute('private_field', $data);
55
        self::assertSame($parent->getId(), $data->parent);
56
        self::assertSame([], $data->children);
57
    }
58
}
59