PathPatternTest.php 1.93 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Framework\View\Test\Unit\Helper;

use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;

class PathPatternTest extends \PHPUnit\Framework\TestCase
{
    /**
     * @var \Magento\Framework\View\Helper\PathPattern
     */
    protected $pathPatternHelper;

    /**
     * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
     */
    protected $objectManagerHelper;

    protected function setUp()
    {
        $this->objectManagerHelper = new ObjectManagerHelper($this);
        $this->pathPatternHelper = $this->objectManagerHelper->getObject(
            \Magento\Framework\View\Helper\PathPattern::class
        );
    }

    /**
     * @param string $path
     * @param string $expectedPattern
     *
     * @dataProvider translatePatternFromGlobDataProvider
     */
    public function testTranslatePatternFromGlob($path, $expectedPattern)
    {
        $this->assertEquals($expectedPattern, $this->pathPatternHelper->translatePatternFromGlob($path));
    }

    /**
     * @return array
     */
    public function translatePatternFromGlobDataProvider()
    {
        return [
            [
                'path' => '*.xml',
                'expectedPattern' => '[^/]*\\.xml'
            ],
            [
                'path' => 'd??.*',
                'expectedPattern' => 'd[^/][^/]\\.[^/]*'
            ],
            [
                'path' => '[!0-9]?-[a-fA-F0-9].php',
                'expectedPattern' => '[^0-9][^/]\\-[a-fA-F0-9]\\.php'
            ],
            [
                'path' => 'config.{php,json,xml}',
                'expectedPattern' => 'config\\.(?:php|json|xml)'
            ],
            [
                'path' => 'c?nf[aio]g{-,}[!0-9/]*.{p,}html',
                'expectedPattern' => 'c[^/]nf[aio]g(?:\\-|)[^0-9/][^/]*\\.(?:p|)html'
            ]
        ];
    }
}