Completed
Pull Request — master (#9)
by Roman
03:37
created

BuildUpdateFormStepTest::testExecute()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

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