Completed
Push — scalar-types/currency ( d4a290...08e1db )
by Kamil
25:05 queued 02:52
created

it_is_initializable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
nc 1
cc 1
eloc 2
nop 0
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\Component\Channel\Context\RequestBased;
15
16
use PhpSpec\ObjectBehavior;
17
use Sylius\Component\Channel\Context\RequestBased\RequestResolverInterface;
18
use Sylius\Component\Channel\Model\ChannelInterface;
19
use Symfony\Component\HttpFoundation\Request;
20
21
/**
22
 * @author Kamil Kokot <[email protected]>
23
 */
24
final class CompositeRequestResolverSpec extends ObjectBehavior
25
{
26
    function it_implements_request_resolver_interface(): void
27
    {
28
        $this->shouldImplement(RequestResolverInterface::class);
29
    }
30
31
    function it_returns_null_if_there_are_no_nested_request_resolvers_added(Request $request): void
32
    {
33
        $this->findChannel($request)->shouldReturn(null);
34
    }
35
36
    function it_returns_null_if_none_of_nested_request_resolvers_returned_channel(
37
        Request $request,
38
        RequestResolverInterface $requestResolver
39
    ): void {
40
        $requestResolver->findChannel($request)->willReturn(null);
41
42
        $this->addResolver($requestResolver);
43
44
        $this->findChannel($request)->shouldReturn(null);
45
    }
46
47
    function it_returns_first_result_returned_by_nested_request_resolvers(
48
        Request $request,
49
        RequestResolverInterface $firstRequestResolver,
50
        RequestResolverInterface $secondRequestResolver,
51
        RequestResolverInterface $thirdRequestResolver,
52
        ChannelInterface $channel
53
    ): void {
54
        $firstRequestResolver->findChannel($request)->willReturn(null);
55
        $secondRequestResolver->findChannel($request)->willReturn($channel);
56
        $thirdRequestResolver->findChannel($request)->shouldNotBeCalled();
57
58
        $this->addResolver($firstRequestResolver);
59
        $this->addResolver($secondRequestResolver);
60
        $this->addResolver($thirdRequestResolver);
61
62
        $this->findChannel($request)->shouldReturn($channel);
63
    }
64
65
    function its_nested_request_resolvers_can_have_priority(
66
        Request $request,
67
        RequestResolverInterface $firstRequestResolver,
68
        RequestResolverInterface $secondRequestResolver,
69
        RequestResolverInterface $thirdRequestResolver,
70
        ChannelInterface $channel
71
    ): void {
72
        $firstRequestResolver->findChannel($request)->shouldNotBeCalled();
73
        $secondRequestResolver->findChannel($request)->willReturn($channel);
74
        $thirdRequestResolver->findChannel($request)->willReturn(null);
75
76
        $this->addResolver($firstRequestResolver, -5);
77
        $this->addResolver($secondRequestResolver, 0);
78
        $this->addResolver($thirdRequestResolver, 5);
79
80
        $this->findChannel($request)->shouldReturn($channel);
81
    }
82
}
83