diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/SettingsForm.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/SettingsForm.php index b830b1a..7e095bb 100644 --- a/core/modules/aggregator/lib/Drupal/aggregator/Form/SettingsForm.php +++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/SettingsForm.php @@ -245,7 +245,7 @@ public function getConfigNames() { $config_names = array('aggregator.settings'); foreach ($this->getConfigurableInstances() as $instance) { - $config_names += $instance->getConfigNames(); + $config_names = array_merge($config_names, $instance->getConfigNames()); } return array_unique($config_names); diff --git a/core/modules/aggregator/tests/Drupal/aggregator/Tests/Form/SettingsFormTest.php b/core/modules/aggregator/tests/Drupal/aggregator/Tests/Form/SettingsFormTest.php index 68c7d73..79367dc 100644 --- a/core/modules/aggregator/tests/Drupal/aggregator/Tests/Form/SettingsFormTest.php +++ b/core/modules/aggregator/tests/Drupal/aggregator/Tests/Form/SettingsFormTest.php @@ -38,12 +38,12 @@ public function testGetConfigNames() { $configs = array('aggregator.settings' => array()); $definitions = array(); - list($settings_form) = $this->getSettingsForm($configs, $definitions); + $settings_form = $this->getSettingsForm($configs, $definitions); $expected = array('aggregator.settings'); - $this->assertSame($expected, $settings_form->getConfigNames()); + $this->assertSame($expected, array_values($settings_form->getConfigNames())); - // Test that aggregator plugins can add additional configuration names and + // Test that aggregator plugins can add additional configuration names. // that duplicated names are removed. $configs = array('aggregator.settings' => array( 'fetcher' => 'aggregator_test_fetcher', @@ -64,28 +64,24 @@ public function testGetConfigNames() { 'description' => 'Test generic processor functionality.', ), ); + $config_names = array('aggregator_test.settings'); - list($settings_form, $plugin_manager) = $this->getSettingsForm($configs, $definitions); - - $plugin = $this->getMock('Drupal\Core\Plugin\PluginFormInterface'); - $plugin - ->expects($this->exactly(3)) - ->method('getConfigNames') - ->will($this->returnValue( - array('aggregator.settings', 'aggregator_test.settings') - )); - $plugin_manager - ->expects($this->exactly(3)) - ->method('createInstance') - ->will($this->returnValueMap(array( - array('aggregator_test_fetcher', array(), $plugin), - array('aggregator_test_parser', array(), $plugin), - array('aggregator_test_processor', array(), $plugin) - ))); + $settings_form = $this->getSettingsForm($configs, $definitions, $config_names); $expected = array('aggregator.settings', 'aggregator_test.settings'); - $this->assertSame($expected, $settings_form->getConfigNames()); + $this->assertEquals($expected, array_values($settings_form->getConfigNames())); + + // Test that config names are not duplicated. + $config_names = array('aggregator.settings'); + + // Re-use $configs and $definitions. + $settings_form = $this->getSettingsForm($configs, $definitions, $config_names); + + $expected = array('aggregator.settings'); + + $this->assertEquals($expected, array_values($settings_form->getConfigNames())); + } /** @@ -96,12 +92,13 @@ public function testGetConfigNames() { * UnitTestCase::getConfigFactoryStub(). * @param array $definitions * An array of aggregator plugin definitions. + * @param array $config_names + * An array of config names that the plugins should return. * - * @return array - * An array that contains the aggregator settings form and mocked aggregator - * plugin manager. + * @return \Drupal\aggregator\Form\SettingsForm + * The aggregator settings form. */ - protected function getSettingsForm(array $configs, array $definitions) { + protected function getSettingsForm(array $configs, array $definitions, array $config_names = NULL) { $plugin_manager = $this->getMockBuilder('Drupal\aggregator\Plugin\AggregatorPluginManager') ->disableOriginalConstructor() ->getMock(); @@ -109,14 +106,34 @@ protected function getSettingsForm(array $configs, array $definitions) { ->expects($this->exactly(3)) ->method('getDefinitions') ->will($this->returnValue($definitions)); - return array(new SettingsForm( + + $settings_form = new SettingsForm( $this->getConfigFactoryStub($configs), $this->getMock('Drupal\Core\Config\Context\ContextInterface'), $plugin_manager, $plugin_manager, $plugin_manager, $this->getMock('Drupal\Core\StringTranslation\TranslationInterface') - ), $plugin_manager); + ); + + if (!empty($config_names)) { + $plugin = $this->getMock('Drupal\Core\Plugin\PluginFormInterface'); + $plugin + ->expects($this->exactly(6)) + ->method('getConfigNames') + ->will($this->returnValue($config_names)); + $plugin_manager + ->expects($this->exactly(3)) + ->method('createInstance') + ->will($this->returnValueMap(array( + array('aggregator_test_fetcher', array(), $plugin), + array('aggregator_test_parser', array(), $plugin), + array('aggregator_test_processor', array(), $plugin) + ))); + + } + + return $settings_form; } }