1<?php
2
3namespace Drupal\Tests\Core\Config;
4
5use Drupal\Core\Config\ConfigCollectionInfo;
6use Drupal\Core\Config\ConfigCrudEvent;
7use Drupal\Core\Config\ConfigFactoryOverrideBase;
8use Drupal\Core\Config\ConfigRenameEvent;
9use Drupal\Tests\UnitTestCase;
10
11/**
12 * @coversDefaultClass \Drupal\Core\Config\ConfigFactoryOverrideBase
13 * @group config
14 */
15class ConfigFactoryOverrideBaseTest extends UnitTestCase {
16
17  /**
18   * @dataProvider providerTestFilterNestedArray
19   */
20  public function testFilterNestedArray(array $original_data, array $override_data_before, array $override_data_after, $changed) {
21    $config_factory = new TestConfigFactoryOverrideBase();
22    $result = $config_factory->doFilterNestedArray($original_data, $override_data_before);
23    $this->assertEquals($changed, $result);
24    $this->assertEquals($override_data_after, $override_data_before);
25  }
26
27  public function providerTestFilterNestedArray() {
28    $data = [];
29    $data['empty'] = [
30      [],
31      [],
32      [],
33      FALSE,
34    ];
35
36    $data['one-level-no-change'] = [
37      ['key' => 'value'],
38      [],
39      [],
40      FALSE,
41    ];
42
43    $data['one-level-override-no-change'] = [
44      ['key' => 'value'],
45      ['key' => 'value2'],
46      ['key' => 'value2'],
47      FALSE,
48    ];
49
50    $data['one-level-override-change'] = [
51      ['key' => 'value'],
52      ['key2' => 'value2'],
53      [],
54      TRUE,
55    ];
56
57    $data['one-level-multiple-override-change'] = [
58      ['key' => 'value', 'key2' => 'value2'],
59      ['key2' => 'value2', 'key3' => 'value3'],
60      ['key2' => 'value2'],
61      TRUE,
62    ];
63
64    $data['multiple-level-multiple-override-change'] = [
65      ['key' => ['key' => 'value'], 'key2' => ['key' => 'value']],
66      ['key' => ['key2' => 'value2'], 'key2' => ['key' => 'value']],
67      ['key2' => ['key' => 'value']],
68      TRUE,
69    ];
70
71    $data['original-scalar-array-override'] = [
72      ['key' => 'value'],
73      ['key' => ['value1', 'value2']],
74      [],
75      TRUE,
76    ];
77
78    return $data;
79  }
80
81}
82
83
84class TestConfigFactoryOverrideBase extends ConfigFactoryOverrideBase {
85
86  public function doFilterNestedArray(array $original_data, array &$override_data) {
87    return $this->filterNestedArray($original_data, $override_data);
88  }
89
90  public function addCollections(ConfigCollectionInfo $collection_info) {
91  }
92
93  public function onConfigSave(ConfigCrudEvent $event) {
94  }
95
96  public function onConfigDelete(ConfigCrudEvent $event) {
97  }
98
99  public function onConfigRename(ConfigRenameEvent $event) {
100  }
101
102}
103