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())); } }