Completed
Pull Request — 3.1 (#348)
by Piotr
09:36 queued 07:40
created

DependentBatchElementSpec::let()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace spec\FSi\Bundle\AdminBundle\Admin\CRUD;
4
5
use FSi\Bundle\AdminBundle\Admin\CRUD\DataIndexerElement;
6
use FSi\Bundle\AdminBundle\Admin\DependentElement;
7
use FSi\Bundle\AdminBundle\Admin\Element;
8
use FSi\Component\DataIndexer\DataIndexerInterface;
9
use PhpSpec\ObjectBehavior;
10
use Symfony\Component\HttpFoundation\Request;
11
use Symfony\Component\HttpFoundation\RequestStack;
12
use FSi\Bundle\AdminBundle\spec\fixtures\MyDependentBatch;
13
use FSi\Bundle\AdminBundle\Admin\CRUD\GenericBatchElement;
14
use FSi\Bundle\AdminBundle\Admin\CRUD\BatchElement;
15
16
class DependentBatchElementSpec extends ObjectBehavior
17
{
18
    function let()
19
    {
20
        $this->beAnInstanceOf(MyDependentBatch::class);
21
        $this->beConstructedWith([]);
22
    }
23
24
    function it_is_admin_element()
25
    {
26
        $this->shouldHaveType(GenericBatchElement::class);
27
        $this->shouldHaveType(BatchElement::class);
28
        $this->shouldHaveType(DependentElement::class);
29
    }
30
31
    function it_have_default_route()
32
    {
33
        $this->getRoute()->shouldReturn('fsi_admin_batch');
34
    }
35
36
    function it_returns_null_if_parent_element_does_not_have_data_indexer(
37
        RequestStack $requestStack,
38
        Request $currentRequest,
39
        Element $parentElement
40
    ) {
41
        $requestStack->getCurrentRequest()->willReturn($currentRequest);
42
43
        $this->setRequestStack($requestStack);
44
        $this->setParentElement($parentElement);
45
46
        $this->getParentObject()->shouldReturn(null);
47
    }
48
49
    function it_returns_null_if_parent_object_id_is_not_available(
50
        RequestStack $requestStack,
51
        Request $currentRequest,
52
        DataIndexerElement $parentElement,
53
        DataIndexerInterface $parentDataIndexer
54
    ) {
55
        $parentElement->getDataIndexer()->willReturn($parentDataIndexer);
56
        $requestStack->getCurrentRequest()->willReturn($currentRequest);
57
        $currentRequest->get(DependentElement::PARENT_REQUEST_PARAMETER)->willReturn(null);
58
59
        $this->setRequestStack($requestStack);
60
        $this->setParentElement($parentElement);
61
62
        $this->getParentObject()->shouldReturn(null);
63
    }
64
65
    function it_returns_parent_object_if_its_available(
66
        RequestStack $requestStack,
67
        Request $currentRequest,
68
        DataIndexerElement $parentElement,
69
        DataIndexerInterface $parentDataIndexer
70
    ) {
71
        $parentElement->getDataIndexer()->willReturn($parentDataIndexer);
72
        $requestStack->getCurrentRequest()->willReturn($currentRequest);
73
        $currentRequest->get(DependentElement::PARENT_REQUEST_PARAMETER)->willReturn('parent_object_id');
74
        $parentDataIndexer->getData('parent_object_id')->willReturn('parent_object');
75
76
        $this->setRequestStack($requestStack);
77
        $this->setParentElement($parentElement);
78
79
        $this->getParentObject()->shouldReturn('parent_object');
80
    }
81
82
    function its_route_parameters_contain_parent_object_id_if_its_available(
83
        RequestStack $requestStack,
84
        Request $currentRequest,
85
        DataIndexerElement $parentElement,
86
        DataIndexerInterface $parentDataIndexer
87
    ) {
88
        $parentElement->getDataIndexer()->willReturn($parentDataIndexer);
89
        $requestStack->getCurrentRequest()->willReturn($currentRequest);
90
        $currentRequest->get(DependentElement::PARENT_REQUEST_PARAMETER)->willReturn('parent_object_id');
91
92
        $this->setRequestStack($requestStack);
93
        $this->setParentElement($parentElement);
94
95
        $this->getRouteParameters()
96
            ->shouldHaveKeyWithValue(DependentElement::PARENT_REQUEST_PARAMETER, 'parent_object_id');
97
    }
98
}
99