annotate vendor/grasmash/yaml-expander/tests/phpunit/ExpanderTest.php @ 5:12f9dff5fda9 tip

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