Completed
Push — theme-bundle ( 927586...69304b )
by Kamil
50:43 queued 15:04
created

PathPackageSpec::getBasePath()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
dl 0
loc 4
rs 10
c 3
b 1
f 0
cc 1
eloc 2
nc 1
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
namespace spec\Sylius\Bundle\ThemeBundle\Asset\Package;
13
14
use PhpSpec\ObjectBehavior;
15
use Sylius\Bundle\ThemeBundle\Asset\Package\PathPackage;
16
use Sylius\Bundle\ThemeBundle\Asset\PathResolverInterface;
17
use Sylius\Bundle\ThemeBundle\Context\ThemeContextInterface;
18
use Sylius\Bundle\ThemeBundle\Model\ThemeInterface;
19
use Symfony\Component\Asset\PackageInterface;
20
use Symfony\Component\Asset\VersionStrategy\VersionStrategyInterface;
21
22
/**
23
 * @mixin PathPackage
24
 *
25
 * @author Kamil Kokot <[email protected]>
26
 */
27
class PathPackageSpec extends ObjectBehavior
28
{
29
    function let(
30
        VersionStrategyInterface $versionStrategy,
31
        ThemeContextInterface $themeContext,
32
        PathResolverInterface $pathResolver
33
    ) {
34
        $this->beConstructedWith('/', $versionStrategy, $themeContext, $pathResolver);
35
    }
36
37
    function it_is_initializable()
38
    {
39
        $this->shouldHaveType('Sylius\Bundle\ThemeBundle\Asset\Package\PathPackage');
40
    }
41
42
    function it_implements_package_interface_interface()
43
    {
44
        $this->shouldImplement(PackageInterface::class);
45
    }
46
47
    function it_returns_vanilla_url_if_there_are_no_active_themes(ThemeContextInterface $themeContext, VersionStrategyInterface $versionStrategy)
48
    {
49
        $path = 'bundles/sample/asset.js';
50
51
        $themeContext->getTheme()->shouldBeCalled()->willReturn(null);
52
        $versionStrategy->applyVersion($path)->shouldBeCalled()->willReturn($path);
53
54
        $this->getUrl($path)->shouldReturn('/' . $path);
55
    }
56
57
    function it_returns_modified_url_if_there_is_active_theme(
58
        ThemeContextInterface $themeContext,
59
        VersionStrategyInterface $versionStrategy,
60
        PathResolverInterface $pathResolver,
61
        ThemeInterface $theme
62
    ) {
63
        $path = 'bundles/sample/asset.js';
64
65
        $themeAssetPath = 'bundles/theme/foo/bar/sample/asset.js';
66
67
        $themeContext->getTheme()->shouldBeCalled()->willReturn($theme);
68
        $pathResolver->resolve($path, $theme)->shouldBeCalled()->willReturn($themeAssetPath);
69
        $versionStrategy->applyVersion($themeAssetPath)->shouldBeCalled()->willReturn($themeAssetPath);
70
71
        $this->getUrl($path)->shouldReturn('/' . $themeAssetPath);
72
    }
73
}
74