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/SiteAliasManagerTest.php
2018-11-23 12:29:20 +00:00

216 lines
6.2 KiB
PHP

<?php
namespace Consolidation\SiteAlias;
use Consolidation\SiteAlias\Util\YamlDataFileLoader;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Yaml\Yaml;
class SiteAliasManagerTest extends TestCase
{
use FixtureFactory;
protected $manager;
/**
* Set up for tests
*/
public function setUp()
{
$root = $this->siteDir();
$referenceData = [];
$siteAliasFixtures = $this->fixturesDir() . '/sitealiases/sites';
$aliasLoader = new SiteAliasFileLoader();
$ymlLoader = new YamlDataFileLoader();
$aliasLoader->addLoader('yml', $ymlLoader);
$this->manager = new SiteAliasManager($aliasLoader, $root);
$this->manager
->setReferenceData($referenceData)
->addSearchLocation($siteAliasFixtures);
}
public function managerGetTestValues()
{
return [
[
'@single.other', false,
],
[
'@other.single.other', false,
],
[
'@single.dev', 'foo: bar
root: /path/to/single',
],
];
}
public function managerGetWithOtherLocationTestValues()
{
return [
[
'@single.other', false,
],
[
'@other.single.other', 'foo: baz
root: /other/other/path/to/single',
],
[
'@single.dev', 'foo: bar
root: /path/to/single',
],
];
}
public function managerGetWithDupLocationsTestValues()
{
return [
[
'@single.dev', 'foo: bar
root: /path/to/single',
],
[
'@other.single.dev', 'foo: baz
root: /other/path/to/single',
],
[
'@dup.single.dev', 'foo: dup
root: /dup/path/to/single',
],
];
}
/**
* This test is just to ensure that our fixture data is being loaded
* accurately so that we can start writing tests. Its okay to remove
* rather than maintain this test once the suite is mature.
*/
public function testGetMultiple()
{
// First set of tests: get all aliases in the default location
$all = $this->manager->getMultiple();
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@single.alternate,@single.dev,@single.empty,@wild.*,@wild.dev', implode(',', $allNames));
$all = $this->manager->getMultiple('@single');
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@single.alternate,@single.dev,@single.empty', implode(',', $allNames));
// Next set of tests: Get all aliases in the 'other' location
$this->addAlternateLocation('other');
$all = $this->manager->getMultiple();
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@other.bob.dev,@other.bob.other,@other.fred.dev,@other.fred.other,@other.single.dev,@other.single.other,@single.alternate,@single.dev,@single.empty,@wild.*,@wild.dev', implode(',', $allNames));
$all = $this->manager->getMultiple('@other');
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@other.bob.dev,@other.bob.other,@other.fred.dev,@other.fred.other,@other.single.dev,@other.single.other', implode(',', $allNames));
// Add the 'dup' location and do some more tests
$this->addAlternateLocation('dup');
$all = $this->manager->getMultiple();
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@dup.bob.dev,@dup.bob.other,@dup.fred.dev,@dup.fred.other,@dup.single.alternate,@dup.single.dev,@other.bob.dev,@other.bob.other,@other.fred.dev,@other.fred.other,@other.single.dev,@other.single.other,@single.alternate,@single.dev,@single.empty,@wild.*,@wild.dev', implode(',', $allNames));
$all = $this->manager->getMultiple('@dup');
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@dup.bob.dev,@dup.bob.other,@dup.fred.dev,@dup.fred.other,@dup.single.alternate,@dup.single.dev', implode(',', $allNames));
$all = $this->manager->getMultiple('@other');
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@other.bob.dev,@other.bob.other,@other.fred.dev,@other.fred.other,@other.single.dev,@other.single.other', implode(',', $allNames));
$all = $this->manager->getMultiple('@dup.single');
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@dup.single.alternate,@dup.single.dev', implode(',', $allNames));
$all = $this->manager->getMultiple('@other.single');
$allNames = array_keys($all);
sort($allNames);
$this->assertEquals('@other.single.dev,@other.single.other', implode(',', $allNames));
}
/**
* @dataProvider managerGetTestValues
*/
public function testGet(
$aliasName,
$expected)
{
$alias = $this->manager->get($aliasName);
$actual = $this->renderAlias($alias);
$this->assertEquals($expected, $actual);
}
/**
* @dataProvider managerGetWithOtherLocationTestValues
*/
public function testGetWithOtherLocation(
$aliasName,
$expected)
{
$this->addAlternateLocation('other');
$this->testGet($aliasName, $expected);
}
/**
* @dataProvider managerGetWithDupLocationsTestValues
*/
public function testGetWithDupLocations(
$aliasName,
$expected)
{
$this->addAlternateLocation('dup');
$this->testGetWithOtherLocation($aliasName, $expected);
}
protected function addAlternateLocation($fixtureDirName)
{
// Add another search location IN ADDITION to the one
// already added in the setup() mehtod.
$siteAliasFixtures = $this->fixturesDir() . '/sitealiases/' . $fixtureDirName;
$this->manager->addSearchLocation($siteAliasFixtures);
}
protected function renderAlias($alias)
{
if (!$alias) {
return false;
}
return trim(Yaml::Dump($alias->export()));
}
}