Completed
Push — scalar-types/resource ( 4814fd )
by Kamil
23:02
created

ResourceGridViewFactorySpec   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 7
dl 0
loc 44
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A let() 0 4 1
A it_implements_resource_grid_view_factory_interface() 0 4 1
B it_uses_data_provider_to_create_a_view_with_data_and_definition() 0 31 1
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace spec\Sylius\Bundle\ResourceBundle\Grid\View;
15
16
use PhpSpec\ObjectBehavior;
17
use Sylius\Bundle\ResourceBundle\Controller\ParametersParserInterface;
18
use Sylius\Bundle\ResourceBundle\Controller\RequestConfiguration;
19
use Sylius\Bundle\ResourceBundle\Grid\View\ResourceGridView;
20
use Sylius\Bundle\ResourceBundle\Grid\View\ResourceGridViewFactory;
21
use Sylius\Bundle\ResourceBundle\Grid\View\ResourceGridViewFactoryInterface;
22
use Sylius\Component\Grid\Data\DataProviderInterface;
23
use Sylius\Component\Grid\Definition\Grid;
24
use Sylius\Component\Grid\Parameters;
25
use Sylius\Component\Resource\Metadata\MetadataInterface;
26
use Symfony\Component\HttpFoundation\Request;
27
28
/**
29
 * @author Paweł Jędrzejewski <[email protected]>
30
 */
31
final class ResourceGridViewFactorySpec extends ObjectBehavior
32
{
33
    function let(DataProviderInterface $dataProvider, ParametersParserInterface $parametersParser): void
34
    {
35
        $this->beConstructedWith($dataProvider, $parametersParser);
36
    }
37
38
    function it_implements_resource_grid_view_factory_interface(): void
39
    {
40
        $this->shouldImplement(ResourceGridViewFactoryInterface::class);
41
    }
42
43
    function it_uses_data_provider_to_create_a_view_with_data_and_definition(
44
        DataProviderInterface $dataProvider,
45
        ParametersParserInterface $parametersParser,
46
        Grid $grid,
47
        MetadataInterface $resourceMetadata,
48
        Request $request,
49
        RequestConfiguration $requestConfiguration
50
    ): void {
51
        $parameters = new Parameters();
52
53
        $expectedResourceGridView = new ResourceGridView(
54
            ['foo', 'bar'],
55
            $grid->getWrappedObject(),
56
            $parameters,
57
            $resourceMetadata->getWrappedObject(),
58
            $requestConfiguration->getWrappedObject()
59
        );
60
61
        $requestConfiguration->getRequest()->willReturn($request);
62
        $parametersParser
63
            ->parseRequestValues(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => ['$customerId']]], $request)
64
            ->willReturn(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => [5]]])
65
        ;
66
67
        $grid->getDriverConfiguration()->willReturn(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => ['$customerId']]]);
68
        $grid->setDriverConfiguration(['repository' => ['method' => 'createByCustomerQueryBuilder', 'arguments' => [5]]])->shouldBeCalled();
69
70
        $dataProvider->getData($grid, $parameters)->willReturn(['foo', 'bar']);
71
72
        $this->create($grid, $parameters, $resourceMetadata, $requestConfiguration)->shouldBeLike($expectedResourceGridView);
73
    }
74
}
75
76