Version 1
[yaffs-website] / web / core / modules / hal / tests / src / Kernel / NormalizerTestBase.php
diff --git a/web/core/modules/hal/tests/src/Kernel/NormalizerTestBase.php b/web/core/modules/hal/tests/src/Kernel/NormalizerTestBase.php
new file mode 100644 (file)
index 0000000..ef51a07
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+
+namespace Drupal\Tests\hal\Kernel;
+
+use Drupal\field\Entity\FieldConfig;
+use Drupal\language\Entity\ConfigurableLanguage;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\field\Entity\FieldStorageConfig;
+
+/**
+ * Test the HAL normalizer.
+ */
+abstract class NormalizerTestBase extends KernelTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['entity_test', 'field', 'hal', 'language', 'serialization', 'system', 'text', 'user', 'filter'];
+
+  /**
+   * The mock serializer.
+   *
+   * @var \Symfony\Component\Serializer\Serializer
+   */
+  protected $serializer;
+
+  /**
+   * The format being tested.
+   *
+   * @var string
+   */
+  protected $format = 'hal_json';
+
+  /**
+   * The class name of the test class.
+   *
+   * @var string
+   */
+  protected $entityClass = 'Drupal\entity_test\Entity\EntityTest';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('user');
+    $this->installEntitySchema('entity_test');
+    // If the concrete test sub-class installs the Node or Comment modules,
+    // ensure that the node and comment entity schema are created before the
+    // field configurations are installed. This is because the entity tables
+    // need to be created before the body field storage tables. This prevents
+    // trying to create the body field tables twice.
+    $class = get_class($this);
+    while ($class) {
+      if (property_exists($class, 'modules')) {
+        // Only check the modules, if the $modules property was not inherited.
+        $rp = new \ReflectionProperty($class, 'modules');
+        if ($rp->class == $class) {
+          foreach (array_intersect(['node', 'comment'], $class::$modules) as $module) {
+            $this->installEntitySchema($module);
+          }
+        }
+      }
+      $class = get_parent_class($class);
+    }
+    $this->installConfig(['field', 'language']);
+    \Drupal::service('router.builder')->rebuild();
+
+    // Add German as a language.
+    ConfigurableLanguage::create([
+      'id' => 'de',
+      'label' => 'Deutsch',
+      'weight' => -1,
+    ])->save();
+
+    // Create the test text field.
+    FieldStorageConfig::create([
+      'field_name' => 'field_test_text',
+      'entity_type' => 'entity_test',
+      'type' => 'text',
+    ])->save();
+    FieldConfig::create([
+      'entity_type' => 'entity_test',
+      'field_name' => 'field_test_text',
+      'bundle' => 'entity_test',
+      'translatable' => FALSE,
+    ])->save();
+
+    // Create the test translatable field.
+    FieldStorageConfig::create([
+      'field_name' => 'field_test_translatable_text',
+      'entity_type' => 'entity_test',
+      'type' => 'text',
+    ])->save();
+    FieldConfig::create([
+      'entity_type' => 'entity_test',
+      'field_name' => 'field_test_translatable_text',
+      'bundle' => 'entity_test',
+      'translatable' => TRUE,
+    ])->save();
+
+    // Create the test entity reference field.
+    FieldStorageConfig::create([
+      'field_name' => 'field_test_entity_reference',
+      'entity_type' => 'entity_test',
+      'type' => 'entity_reference',
+      'settings' => [
+        'target_type' => 'entity_test',
+      ],
+    ])->save();
+    FieldConfig::create([
+      'entity_type' => 'entity_test',
+      'field_name' => 'field_test_entity_reference',
+      'bundle' => 'entity_test',
+      'translatable' => TRUE,
+    ])->save();
+
+    $this->serializer = $this->container->get('serializer');
+  }
+
+}