comparison vendor/grasmash/yaml-expander/tests/phpunit/ExpanderTest.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:c75dbcec494b
1 <?php
2
3 namespace Grasmash\YamlExpander\Tests\Command;
4
5 use Dflydev\DotAccessData\Data;
6 use Grasmash\YamlExpander\Expander;
7 use Grasmash\YamlExpander\Tests\TestBase;
8 use Symfony\Component\Yaml\Yaml;
9
10 class ExpanderTest extends \PHPUnit_Framework_TestCase
11 {
12
13 /**
14 * Tests Expander::expandArrayProperties().
15 *
16 * @param string $filename
17 * @param array $reference_array
18 *
19 * @dataProvider providerYaml
20 */
21 public function testExpandArrayProperties($filename, $reference_array)
22 {
23 $array = Yaml::parse(file_get_contents(__DIR__ . "/../resources/$filename"));
24 putenv("test=gomjabbar");
25 $expanded = Expander::expandArrayProperties($array);
26 $this->assertEquals('gomjabbar', $expanded['env-test']);
27 $this->assertEquals('Frank Herbert 1965', $expanded['book']['copyright']);
28 $this->assertEquals('Paul Atreides', $expanded['book']['protaganist']);
29 $this->assertEquals('Dune by Frank Herbert', $expanded['summary']);
30 $this->assertEquals('${book.media.1}, hardcover', $expanded['available-products']);
31 $this->assertEquals('Dune', $expanded['product-name']);
32 $this->assertEquals(Yaml::dump($array['inline-array'], 0), $expanded['expand-array']);
33
34 $expanded = Expander::expandArrayProperties($array, $reference_array);
35 $this->assertEquals('Dune Messiah, and others.', $expanded['sequels']);
36 $this->assertEquals('Dune Messiah', $expanded['book']['nested-reference']);
37 }
38
39 /**
40 * Tests Expander::parse().
41 *
42 * @param string $filename
43 * @param array $reference_array
44 *
45 * @dataProvider providerYaml
46 */
47 public function testParse($filename, $reference_array)
48 {
49 $yaml_string = file_get_contents(__DIR__ . "/../resources/$filename");
50 $expanded = Expander::parse($yaml_string);
51 $this->assertEquals('Frank Herbert 1965', $expanded['book']['copyright']);
52 $this->assertEquals('Paul Atreides', $expanded['book']['protaganist']);
53 $this->assertEquals('Dune by Frank Herbert', $expanded['summary']);
54 $this->assertEquals('${book.media.1}, hardcover', $expanded['available-products']);
55
56 $expanded = Expander::parse($yaml_string, $reference_array);
57 $this->assertEquals('Dune Messiah, and others.', $expanded['sequels']);
58 $this->assertEquals('Dune Messiah', $expanded['book']['nested-reference']);
59 }
60
61 /**
62 * @return array
63 * An array of values to test.
64 */
65 public function providerYaml()
66 {
67 return [
68 ['valid.yml', [
69 'book' => [
70 'sequel' => 'Dune Messiah'
71 ]
72 ]],
73 ];
74 }
75
76 /**
77 * Tests Expander::expandProperty().
78 *
79 * @dataProvider providerTestExpandProperty
80 */
81 public function testExpandProperty($array, $property_name, $unexpanded_string, $expected)
82 {
83 $data = new Data($array);
84 $expanded_value = Expander::expandProperty($property_name, $unexpanded_string, $data);
85
86 $this->assertEquals($expected, $expanded_value);
87 }
88
89 /**
90 * @return array
91 */
92 public function providerTestExpandProperty()
93 {
94 return [
95 [ ['author' => 'Frank Herbert'], 'author', '${author}', 'Frank Herbert' ],
96 [ ['book' => ['author' => 'Frank Herbert' ]], 'book.author', '${book.author}', 'Frank Herbert' ],
97 ];
98 }
99 }