Version 1
[yaffs-website] / web / core / modules / contact / src / Tests / Views / ContactFieldsTest.php
diff --git a/web/core/modules/contact/src/Tests/Views/ContactFieldsTest.php b/web/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
new file mode 100644 (file)
index 0000000..fafe451
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\contact\Tests\Views;
+
+use Drupal\field\Entity\FieldConfig;
+use Drupal\views\Tests\ViewTestBase;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\contact\Entity\ContactForm;
+
+/**
+ * Tests which checks that no fieldapi fields are added on contact.
+ *
+ * @group contact
+ */
+class ContactFieldsTest extends ViewTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['field', 'text', 'contact'];
+
+  /**
+   * Contains the field storage definition for contact used for this test.
+   *
+   * @var \Drupal\field\Entity\FieldStorageConfig
+   */
+  protected $fieldStorage;
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->fieldStorage = FieldStorageConfig::create([
+      'field_name' => strtolower($this->randomMachineName()),
+      'entity_type' => 'contact_message',
+      'type' => 'text'
+    ]);
+    $this->fieldStorage->save();
+
+    ContactForm::create([
+      'id' => 'contact_message',
+      'label' => 'Test contact form',
+    ])->save();
+
+    FieldConfig::create([
+      'field_storage' => $this->fieldStorage,
+      'bundle' => 'contact_message',
+    ])->save();
+
+    $this->container->get('views.views_data')->clear();
+  }
+
+  /**
+   * Tests the views data generation.
+   */
+  public function testViewsData() {
+    // Test that the field is not exposed to views, since contact_message
+    // entities have no storage.
+    $table_name = 'contact_message__' . $this->fieldStorage->getName();
+    $data = $this->container->get('views.views_data')->get($table_name);
+    $this->assertFalse($data, 'The field is not exposed to Views.');
+  }
+
+}