Version 1
[yaffs-website] / web / core / modules / config / tests / config_override_integration_test / src / CacheabilityMetadataConfigOverride.php
diff --git a/web/core/modules/config/tests/config_override_integration_test/src/CacheabilityMetadataConfigOverride.php b/web/core/modules/config/tests/config_override_integration_test/src/CacheabilityMetadataConfigOverride.php
new file mode 100644 (file)
index 0000000..4ae2fe6
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+namespace Drupal\config_override_integration_test;
+
+use Drupal\Core\Cache\CacheableMetadata;
+use Drupal\Core\Config\ConfigFactoryOverrideInterface;
+use Drupal\Core\Config\StorageInterface;
+
+/**
+ * Test implementation of a config override that provides cacheability metadata.
+ */
+class CacheabilityMetadataConfigOverride implements ConfigFactoryOverrideInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function loadOverrides($names) {
+    $overrides = [];
+
+    // Override the test block depending on the state set in the test.
+    $state = \Drupal::state()->get('config_override_integration_test.enabled', FALSE);
+    if (in_array('block.block.config_override_test', $names) && $state !== FALSE) {
+      $overrides = $overrides + [
+        'block.block.config_override_test' => [
+          'settings' => ['label' => 'Overridden block label'],
+        ],
+      ];
+    }
+
+    return $overrides;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheSuffix() {
+    return 'config_override_integration_test';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
+    return NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheableMetadata($name) {
+    $metadata = new CacheableMetadata();
+    if ($name === 'block.block.config_override_test') {
+      $metadata
+        ->setCacheContexts(['config_override_integration_test'])
+        ->setCacheTags(['config_override_integration_test_tag']);
+    }
+    return $metadata;
+  }
+
+}