Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / system / tests / src / Functional / Entity / ConfigEntityImportTest.php
index 6c5a9d64c59e4acac6292b2a409a6160f169e263..88d9bb5d62abe02e5364cd75b446c5311754861c 100644 (file)
@@ -21,7 +21,7 @@ class ConfigEntityImportTest extends BrowserTestBase {
    *
    * @var array
    */
-  public static $modules = ['action', 'block', 'filter', 'image', 'search', 'search_extra_type'];
+  public static $modules = ['action', 'block', 'filter', 'image', 'search', 'search_extra_type', 'config_test'];
 
   /**
    * {@inheritdoc}
@@ -41,7 +41,9 @@ class ConfigEntityImportTest extends BrowserTestBase {
     $this->doFilterFormatUpdate();
     $this->doImageStyleUpdate();
     $this->doSearchPageUpdate();
+    $this->doThirdPartySettingsUpdate();
   }
+
   /**
    * Tests updating a action during import.
    */
@@ -171,6 +173,34 @@ class ConfigEntityImportTest extends BrowserTestBase {
     $this->assertConfigUpdateImport($name, $original_data, $custom_data);
   }
 
+  /**
+   * Tests updating of third party settings.
+   */
+  protected function doThirdPartySettingsUpdate() {
+    // Create a test action with a known label.
+    $name = 'system.action.third_party_settings_test';
+
+    /** @var \Drupal\config_test\Entity\ConfigTest $entity */
+    $entity = Action::create([
+      'id' => 'third_party_settings_test',
+      'plugin' => 'action_message_action',
+    ]);
+    $entity->save();
+
+    $this->assertIdentical([], $entity->getThirdPartyProviders());
+    // Get a copy of the configuration before the third party setting is added.
+    $no_third_part_setting_config = $this->container->get('config.storage')->read($name);
+
+    // Add a third party setting.
+    $entity->setThirdPartySetting('config_test', 'integer', 1);
+    $entity->save();
+    $this->assertIdentical(1, $entity->getThirdPartySetting('config_test', 'integer'));
+    $has_third_part_setting_config = $this->container->get('config.storage')->read($name);
+
+    // Ensure configuration imports can completely remove third party settings.
+    $this->assertConfigUpdateImport($name, $has_third_part_setting_config, $no_third_part_setting_config);
+  }
+
   /**
    * Tests that a single set of plugin config stays in sync.
    *