drupal_composer_builder/tests/MergeParamsCommandTest.php
Eric BELLOT ea929fcaa9 Allow key deletion. Replace overridden indexed arrays (no merge).
- Fixed parameter errors, coverage analysis, add phpstan.
- Remove unused code, clarify mergeDeepArray difference from Drupal.
2021-09-19 12:42:50 +02:00

70 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Fgm\Drupal\Composer;
use PHPUnit\Framework\TestCase;
final class MergeParamsCommandTest extends TestCase {
/**
* Test MergeParamsCommand::merge().
*
* @covers \Fgm\Drupal\Composer\MergeParamsCommand::mergeDeepArray
*/
public function testMergeDeepArray() {
// Base array (like a dist.params.local.yml).
$dist = [
'keyedArray1' => [
'key1' => 'dist1',
'key2' => 'dist2',
'key3' => 'dist3',
],
'indexedArray1' => [
'dist1',
'dist2',
'dist3',
],
];
// Overriding array (like params.local.yml).
$local = [
'keyedArray1' => [
'key1' => 'local1',
'key3' => NULL,
'key4' => 'local4',
],
'keyedArray2' => [
'key1' => 'local1',
],
'indexedArray1' => [
'local1',
'local2',
],
];
// Merged array (like merged.params.local.yml).
$merged = MergeParamsCommand::mergeDeepArray([$dist, $local]);
$expected = [
'keyedArray1' => [
// Key1 : Dist value is overrided by local value.
'key1' => 'local1',
// Key2 : No overriding in local, dist value is transmitted.
'key2' => 'dist2',
// Key3 : Dist value is overrided with a NULL value: key3 is removed.
// Key4 : No key4 in dist array, local Key4 is added.
'key4' => 'local4',
],
// No Array2 in dist, local Array2 is added.
'keyedArray2' => [
'key1' => 'local1',
],
// Dist indexed array is replaced by local index array.
'indexedArray1' => [
'local1',
'local2',
],
];
$this->assertEquals($expected, $merged);
}
}