Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / consolidation / site-alias / tests / SiteAliasManagerTest.php
diff --git a/vendor/consolidation/site-alias/tests/SiteAliasManagerTest.php b/vendor/consolidation/site-alias/tests/SiteAliasManagerTest.php
new file mode 100644 (file)
index 0000000..00ac33a
--- /dev/null
@@ -0,0 +1,215 @@
+<?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()));
+    }
+}