Chris@4
|
1 <?php
|
Chris@4
|
2 namespace Consolidation\SiteAlias;
|
Chris@4
|
3
|
Chris@4
|
4 use PHPUnit\Framework\TestCase;
|
Chris@4
|
5 use Consolidation\SiteAlias\Util\YamlDataFileLoader;
|
Chris@4
|
6
|
Chris@4
|
7 class SiteAliasFileLoaderTest extends TestCase
|
Chris@4
|
8 {
|
Chris@4
|
9 use FixtureFactory;
|
Chris@4
|
10 use FunctionUtils;
|
Chris@4
|
11
|
Chris@4
|
12 function setUp()
|
Chris@4
|
13 {
|
Chris@4
|
14 $this->sut = new SiteAliasFileLoader();
|
Chris@4
|
15
|
Chris@4
|
16 $ymlLoader = new YamlDataFileLoader();
|
Chris@4
|
17 $this->sut->addLoader('yml', $ymlLoader);
|
Chris@4
|
18 }
|
Chris@4
|
19
|
Chris@4
|
20 public function testLoadWildAliasFile()
|
Chris@4
|
21 {
|
Chris@4
|
22 $siteAliasFixtures = $this->fixturesDir() . '/sitealiases/sites';
|
Chris@4
|
23 $this->assertTrue(is_dir($siteAliasFixtures));
|
Chris@4
|
24 $this->assertTrue(is_file($siteAliasFixtures . '/wild.site.yml'));
|
Chris@4
|
25
|
Chris@4
|
26 $this->sut->addSearchLocation($siteAliasFixtures);
|
Chris@4
|
27
|
Chris@4
|
28 // Try to get the dev environment.
|
Chris@4
|
29 $name = SiteAliasName::parse('@wild.dev');
|
Chris@4
|
30 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@5
|
31 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
32 $this->assertEquals('/path/to/wild', $result->get('root'));
|
Chris@4
|
33 $this->assertEquals('bar', $result->get('foo'));
|
Chris@4
|
34
|
Chris@4
|
35 // Try to fetch an environment that does not exist. Since this is
|
Chris@4
|
36 // a wildcard alias, there should
|
Chris@4
|
37 $name = SiteAliasName::parse('@wild.other');
|
Chris@4
|
38 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@5
|
39 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
40 $this->assertEquals('/wild/path/to/wild', $result->get('root'));
|
Chris@4
|
41 $this->assertEquals('bar', $result->get('foo'));
|
Chris@4
|
42
|
Chris@4
|
43 }
|
Chris@4
|
44
|
Chris@4
|
45 public function testLoadSingleAliasFile()
|
Chris@4
|
46 {
|
Chris@4
|
47 $siteAliasFixtures = $this->fixturesDir() . '/sitealiases/sites';
|
Chris@4
|
48 $this->assertTrue(is_dir($siteAliasFixtures));
|
Chris@4
|
49 $this->assertTrue(is_file($siteAliasFixtures . '/simple.site.yml'));
|
Chris@4
|
50 $this->assertTrue(is_file($siteAliasFixtures . '/single.site.yml'));
|
Chris@4
|
51
|
Chris@4
|
52 $this->sut->addSearchLocation($siteAliasFixtures);
|
Chris@4
|
53
|
Chris@4
|
54 // Add a secondary location
|
Chris@4
|
55 $siteAliasFixtures = $this->fixturesDir() . '/sitealiases/other';
|
Chris@4
|
56 $this->assertTrue(is_dir($siteAliasFixtures));
|
Chris@4
|
57 $this->sut->addSearchLocation($siteAliasFixtures);
|
Chris@4
|
58
|
Chris@4
|
59 // Look for a simple alias with no environments defined
|
Chris@4
|
60 $name = new SiteAliasName('simple');
|
Chris@4
|
61 $this->assertEquals('simple', $name->sitename());
|
Chris@4
|
62 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@5
|
63 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
64 $this->assertEquals('/path/to/simple', $result->get('root'));
|
Chris@4
|
65
|
Chris@4
|
66 // Look for a single alias without an environment specified.
|
Chris@4
|
67 $name = new SiteAliasName('single');
|
Chris@4
|
68 $this->assertEquals('single', $name->sitename());
|
Chris@4
|
69 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@5
|
70 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
71 $this->assertEquals('/path/to/single', $result->get('root'));
|
Chris@4
|
72 $this->assertEquals('bar', $result->get('foo'));
|
Chris@4
|
73
|
Chris@4
|
74 // Same test, but with environment explicitly requested.
|
Chris@4
|
75 $name = SiteAliasName::parse('@single.alternate');
|
Chris@4
|
76 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@5
|
77 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
78 $this->assertEquals('/alternate/path/to/single', $result->get('root'));
|
Chris@4
|
79 $this->assertEquals('bar', $result->get('foo'));
|
Chris@4
|
80
|
Chris@4
|
81 // Same test, but with location explicitly filtered.
|
Chris@4
|
82 $name = SiteAliasName::parse('@other.single.dev');
|
Chris@4
|
83 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@5
|
84 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
85 $this->assertEquals('/other/path/to/single', $result->get('root'));
|
Chris@4
|
86 $this->assertEquals('baz', $result->get('foo'));
|
Chris@4
|
87
|
Chris@4
|
88 // Try to fetch an alias that does not exist.
|
Chris@4
|
89 $name = SiteAliasName::parse('@missing');
|
Chris@4
|
90 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@4
|
91 $this->assertFalse($result);
|
Chris@4
|
92
|
Chris@4
|
93 // Try to fetch an alias using a missing location
|
Chris@4
|
94 $name = SiteAliasName::parse('@missing.single.alternate');
|
Chris@4
|
95 $result = $this->callProtected('loadSingleAliasFile', [$name]);
|
Chris@4
|
96 $this->assertFalse($result);
|
Chris@4
|
97 }
|
Chris@4
|
98
|
Chris@4
|
99 public function testLoad()
|
Chris@4
|
100 {
|
Chris@4
|
101 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/sites');
|
Chris@4
|
102
|
Chris@4
|
103 // Look for a simple alias with no environments defined
|
Chris@4
|
104 $name = new SiteAliasName('simple');
|
Chris@4
|
105 $result = $this->sut->load($name);
|
Chris@5
|
106 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
107 $this->assertEquals('/path/to/simple', $result->get('root'));
|
Chris@4
|
108
|
Chris@4
|
109 // Look for a single alias without an environment specified.
|
Chris@4
|
110 $name = new SiteAliasName('single');
|
Chris@4
|
111 $result = $this->sut->load($name);
|
Chris@5
|
112 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
113 $this->assertEquals('/path/to/single', $result->get('root'));
|
Chris@4
|
114 $this->assertEquals('bar', $result->get('foo'));
|
Chris@4
|
115
|
Chris@4
|
116 // Same test, but with environment explicitly requested.
|
Chris@4
|
117 $name = new SiteAliasName('single', 'alternate');
|
Chris@4
|
118 $result = $this->sut->load($name);
|
Chris@5
|
119 $this->assertTrue($result instanceof SiteAlias);
|
Chris@4
|
120 $this->assertEquals('/alternate/path/to/single', $result->get('root'));
|
Chris@4
|
121 $this->assertEquals('bar', $result->get('foo'));
|
Chris@4
|
122
|
Chris@4
|
123 // Try to fetch an alias that does not exist.
|
Chris@4
|
124 $name = new SiteAliasName('missing');
|
Chris@4
|
125 $result = $this->sut->load($name);
|
Chris@4
|
126 $this->assertFalse($result);
|
Chris@4
|
127
|
Chris@4
|
128 // Try to fetch an alias that does not exist.
|
Chris@4
|
129 $name = new SiteAliasName('missing');
|
Chris@4
|
130 $result = $this->sut->load($name);
|
Chris@4
|
131 $this->assertFalse($result);
|
Chris@4
|
132 }
|
Chris@4
|
133
|
Chris@4
|
134 public function testLoadAll()
|
Chris@4
|
135 {
|
Chris@4
|
136 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/sites');
|
Chris@4
|
137 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/other');
|
Chris@4
|
138
|
Chris@4
|
139 $all = $this->sut->loadAll();
|
Chris@4
|
140 $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(',', array_keys($all)));
|
Chris@4
|
141 }
|
Chris@4
|
142
|
Chris@4
|
143 public function testLoadMultiple()
|
Chris@4
|
144 {
|
Chris@4
|
145 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/sites');
|
Chris@4
|
146 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/other');
|
Chris@4
|
147
|
Chris@4
|
148 $aliases = $this->sut->loadMultiple('single');
|
Chris@4
|
149 $this->assertEquals('@single.dev,@single.alternate,@single.empty,@other.single.dev,@other.single.other', implode(',', array_keys($aliases)));
|
Chris@4
|
150 }
|
Chris@4
|
151
|
Chris@4
|
152 public function testLoadLocation()
|
Chris@4
|
153 {
|
Chris@4
|
154 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/sites');
|
Chris@4
|
155 $this->sut->addSearchLocation($this->fixturesDir() . '/sitealiases/other');
|
Chris@4
|
156
|
Chris@4
|
157 $aliases = $this->sut->loadLocation('other');
|
Chris@4
|
158 $this->assertEquals('@other.bob.dev,@other.bob.other,@other.fred.dev,@other.fred.other,@other.single.dev,@other.single.other', implode(',', array_keys($aliases)));
|
Chris@4
|
159 }
|
Chris@4
|
160 }
|