View source
<?php
namespace Drupal\Tests\config_sync\Unit;
use Drupal\config_sync\ConfigSyncMerger;
class ConfigSyncMergerTest extends \PHPUnit_Framework_TestCase {
protected function getStates() {
$previous = [
'first' => 1,
'second' => [
'one',
'two',
],
'third' => [
'one' => 'first',
'two' => 'second',
],
'fourth' => 'fourth',
];
$current = $previous;
$active = $previous;
$active['fifth'] = 'fifth';
return [
$previous,
$current,
$active,
];
}
public function statesProvider() {
$data = [];
list($previous, $current, $active) = $this
->getStates();
$expected = $active;
$data['no difference'] = [
$previous,
$current,
$active,
$expected,
];
list($previous, $current, $active) = $this
->getStates();
$current['second'][] = 'three';
$current['third']['third'] = 'three';
$current['another'] = 'test';
$expected = $active;
$expected['second'][] = 'three';
$expected['third']['third'] = 'three';
$expected['another'] = 'test';
$data['additions'] = [
$previous,
$current,
$active,
$expected,
];
list($previous, $current, $active) = $this
->getStates();
unset($current['first']);
unset($current['second'][array_search('two', $current['second'])]);
unset($current['third']['one']);
$expected = $active;
unset($expected['first']);
unset($expected['second'][array_search('two', $expected['second'])]);
unset($expected['third']['one']);
$data['deletions'] = [
$previous,
$current,
$active,
$expected,
];
$active['fifth'] = 'customized';
unset($current['fifth']);
$expected['fifth'] = 'customized';
$data['deletions with customization'] = [
$previous,
$current,
$active,
$expected,
];
list($previous, $current, $active) = $this
->getStates();
$current['third']['one'] = 'change';
$current['fourth'] = 'change';
$expected = $active;
$expected['third']['one'] = 'change';
$expected['fourth'] = 'change';
$data['changes'] = [
$previous,
$current,
$active,
$expected,
];
$active['third']['one'] = 'active';
$expected['third']['one'] = 'active';
$data['changes with customization'] = [
$previous,
$current,
$active,
$expected,
];
return $data;
}
public function testMergeConfigItemStates($previous, $current, $active, $expected) {
$config_sync_merger = new ConfigSyncMerger();
$result = $config_sync_merger
->mergeConfigItemStates($previous, $current, $active);
$this
->assertEquals($result, $expected);
}
}