3 namespace Grasmash\YamlExpander\Tests\Command;
5 use Dflydev\DotAccessData\Data;
6 use Grasmash\YamlExpander\Expander;
7 use Grasmash\YamlExpander\Tests\TestBase;
8 use Symfony\Component\Yaml\Yaml;
10 class ExpanderTest extends \PHPUnit_Framework_TestCase
14 * Tests Expander::expandArrayProperties().
16 * @param string $filename
17 * @param array $reference_array
19 * @dataProvider providerYaml
21 public function testExpandArrayProperties($filename, $reference_array)
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']);
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']);
40 * Tests Expander::parse().
42 * @param string $filename
43 * @param array $reference_array
45 * @dataProvider providerYaml
47 public function testParse($filename, $reference_array)
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']);
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']);
63 * An array of values to test.
65 public function providerYaml()
70 'sequel' => 'Dune Messiah'
77 * Tests Expander::expandProperty().
79 * @dataProvider providerTestExpandProperty
81 public function testExpandProperty($array, $property_name, $unexpanded_string, $expected)
83 $data = new Data($array);
84 $expanded_value = Expander::expandProperty($property_name, $unexpanded_string, $data);
86 $this->assertEquals($expected, $expanded_value);
92 public function providerTestExpandProperty()
95 [ ['author' => 'Frank Herbert'], 'author', '${author}', 'Frank Herbert' ],
96 [ ['book' => ['author' => 'Frank Herbert' ]], 'book.author', '${book.author}', 'Frank Herbert' ],