Pull merge.
[yaffs-website] / vendor / grasmash / yaml-expander / tests / phpunit / ExpanderTest.php
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 }