Test Failed
Pull Request — master (#39)
by Roman
03:36
created

testGetRequiredArtifacts()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 18
rs 9.8666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Kami\ApiCoreBundle\Tests\RequestProcessor\Step\Update;
4
5
use Doctrine\Common\Annotations\Reader;
6
use Kami\ApiCoreBundle\RequestProcessor\Step\Update\BuildUpdateFormStep;
7
use Kami\ApiCoreBundle\Security\AccessManager;
8
use Kami\ApiCoreBundle\Tests\Entity\MyModel;
9
use Kami\Component\RequestProcessor\Artifact;
10
use Kami\Component\RequestProcessor\ArtifactCollection;
11
use PHPUnit\Framework\TestCase;
12
use Symfony\Component\Form\FormBuilderInterface;
13
use Symfony\Component\Form\FormFactoryInterface;
14
use Symfony\Component\Form\FormInterface;
15
use Symfony\Component\HttpFoundation\Request;
16
17
class BuildUpdateFormStepTest extends TestCase
18
{
19
    public function testGetRequiredArtifacts()
20
    {
21
        $formMock = $this->createMock(FormInterface::class);
22
        $formBuilderInterfaceMock = $this->createMock(FormBuilderInterface::class);
23
        $formBuilderInterfaceMock->expects($this->any())->method('add')->willReturn($formBuilderInterfaceMock);
24
        $formBuilderInterfaceMock->expects($this->any())->method('getForm')->willReturn($formMock);
25
26
        $formFactoryMock = $this->createMock(FormFactoryInterface::class);
27
        $formFactoryMock->expects($this->any())->method('createNamedBuilder')->willReturn($formBuilderInterfaceMock);
28
        $accessManager = $this->createMock(AccessManager::class);
29
        $readerMock = $this->createMock(Reader::class);
30
31
        $readerMock->expects($this->any())->method('getPropertyAnnotation')->willReturn([]);
32
33
        $accessManager->expects($this->any())->method('canCreateProperty')->willReturn(true);
34
35
        $step = new BuildUpdateFormStep($formFactoryMock, $accessManager, $readerMock);
36
        $this->assertEquals(['reflection', 'access_granted', 'entity'], $step->getRequiredArtifacts());
37
    }
38
39
    public function testExecute()
40
    {
41
        $formMock = $this->createMock(FormInterface::class);
42
        $formBuilderInterfaceMock = $this->createMock(FormBuilderInterface::class);
43
        $formBuilderInterfaceMock->expects($this->any())->method('add')->willReturn($formBuilderInterfaceMock);
44
        $formBuilderInterfaceMock->expects($this->any())->method('getForm')->willReturn($formMock);
45
46
        $formFactoryMock = $this->createMock(FormFactoryInterface::class);
47
        $formFactoryMock->expects($this->any())->method('createNamedBuilder')->willReturn($formBuilderInterfaceMock);
48
        $accessManager = $this->createMock(AccessManager::class);
49
        $readerMock = $this->createMock(Reader::class);
50
51
        $readerMock->expects($this->any())->method('getPropertyAnnotation')->willReturn([]);
52
53
        $accessManager->expects($this->any())->method('canCreateProperty')->willReturn(true);
54
55
        $step = new BuildUpdateFormStep($formFactoryMock, $accessManager, $readerMock);
56
57
        $step->setArtifacts(new ArtifactCollection([
58
            new Artifact('reflection', new \ReflectionClass(MyModel::class)),
59
            new Artifact('entity', new MyModel())
60
        ]));
61
62
        $response = $step->execute(new Request());
63
        $this->assertInstanceOf(ArtifactCollection::class, $response);
64
        $this->assertInstanceOf(FormInterface::class, $response->get('form')->getValue());
65
    }
66
}