This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/vendor/consolidation/site-alias/tests/SiteSpecParserTest.php
2018-11-23 12:29:20 +00:00

178 lines
4.4 KiB
PHP

<?php
namespace Consolidation\SiteAlias;
use PHPUnit\Framework\TestCase;
class SiteSpecParserTest extends TestCase
{
use FixtureFactory;
/**
* @dataProvider parserTestValues
*/
public function testSiteSpecParser(
$spec,
$expected)
{
$root = $this->siteDir();
$fixtureSite = '/' . basename($root);
$parser = new SiteSpecParser();
// If the test spec begins with '/fixtures', substitute the
// actual path to our fixture site.
$spec = preg_replace('%^/fixtures%', $root, $spec);
// Make sure that our spec is valid
$this->assertTrue($parser->validSiteSpec($spec));
// Parse it!
$result = $parser->parse($spec, $root);
// If the result contains the path to our fixtures site, replace
// it with the simple string '/fixtures'.
if (isset($result['root'])) {
$result['root'] = preg_replace("%.*$fixtureSite%", '/fixtures', $result['root']);
}
// Compare the altered result with the expected value.
$this->assertEquals($expected, $result);
}
/**
* @dataProvider validSiteSpecs
*/
public function testValidSiteSpecs($spec)
{
$this->isSpecValid($spec, true);
}
/**
* @dataProvider invalidSiteSpecs
*/
public function testInvalidSiteSpecs($spec)
{
$this->isSpecValid($spec, false);
}
protected function isSpecValid($spec, $expected)
{
$parser = new SiteSpecParser();
$result = $parser->validSiteSpec($spec);
$this->assertEquals($expected, $result);
}
public static function validSiteSpecs()
{
return [
[ '/path/to/drupal#uri' ],
[ 'user@server/path/to/drupal#uri' ],
[ 'user.name@example.com/path/to/drupal#uri' ],
[ 'user@server/path/to/drupal' ],
[ 'user@example.com/path/to/drupal' ],
[ 'user@server#uri' ],
[ 'user@example.com#uri' ],
[ '#uri' ],
];
}
public static function invalidSiteSpecs()
{
return [
[ 'uri' ],
[ '@/#' ],
[ 'user@#uri' ],
[ '@server/path/to/drupal#uri' ],
[ 'user@server/path/to/drupal#' ],
[ 'user@server/path/to/drupal#uri!' ],
[ 'user@server/path/to/drupal##uri' ],
[ 'user#server/path/to/drupal#uri' ],
];
}
public static function parserTestValues()
{
return [
[
'user@server/path#somemultisite',
[
'user' => 'user',
'host' => 'server',
'root' => '/path',
'uri' => 'somemultisite',
],
],
[
'user.name@example.com/path#somemultisite',
[
'user' => 'user.name',
'host' => 'example.com',
'root' => '/path',
'uri' => 'somemultisite',
],
],
[
'user@server/path',
[
'user' => 'user',
'host' => 'server',
'root' => '/path',
'uri' => 'default',
],
],
[
'user.name@example.com/path',
[
'user' => 'user.name',
'host' => 'example.com',
'root' => '/path',
'uri' => 'default',
],
],
[
'/fixtures#mymultisite',
[
'root' => '/fixtures',
'uri' => 'mymultisite',
],
],
[
'#mymultisite',
[
'root' => '/fixtures',
'uri' => 'mymultisite',
],
],
[
'/fixtures#somemultisite',
[
],
],
[
'/path#somemultisite',
[
],
],
[
'/path#mymultisite',
[
],
],
[
'#somemultisite',
[
],
],
];
}
}