Version 1
[yaffs-website] / web / core / modules / responsive_image / tests / src / Kernel / ResponsiveImageIntegrationTest.php
diff --git a/web/core/modules/responsive_image/tests/src/Kernel/ResponsiveImageIntegrationTest.php b/web/core/modules/responsive_image/tests/src/Kernel/ResponsiveImageIntegrationTest.php
new file mode 100644 (file)
index 0000000..d481291
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\Tests\responsive_image\Kernel;
+
+use Drupal\Core\Entity\Entity\EntityViewDisplay;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\responsive_image\Entity\ResponsiveImageStyle;
+
+/**
+ * Tests the integration of responsive image with other components.
+ *
+ * @group responsive_image
+ */
+class ResponsiveImageIntegrationTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['responsive_image', 'field', 'image', 'file', 'entity_test', 'breakpoint', 'responsive_image_test_module'];
+
+  /**
+   * Tests integration with entity view display.
+   */
+  public function testEntityViewDisplayDependency() {
+    // Create a responsive image style.
+    ResponsiveImageStyle::create([
+      'id' => 'foo',
+      'label' => 'Foo',
+      'breakpoint_group' => 'responsive_image_test_module',
+    ])->save();
+    // Create an image field to be used with a responsive image formatter.
+    FieldStorageConfig::create([
+      'type' => 'image',
+      'entity_type' => 'entity_test',
+      'field_name' => 'bar',
+    ])->save();
+    FieldConfig::create([
+      'entity_type' => 'entity_test',
+      'bundle' => 'entity_test',
+      'field_name' => 'bar',
+    ])->save();
+    /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display */
+    $display = EntityViewDisplay::create([
+      'targetEntityType' => 'entity_test',
+      'bundle' => 'entity_test',
+      'mode' => 'default',
+    ]);
+    $display->setComponent('bar', [
+      'type' => 'responsive_image',
+      'label' => 'hidden',
+      'settings' => ['responsive_image_style' => 'foo', 'image_link' => ''],
+      'third_party_settings' => [],
+    ])->save();
+
+    // Check that the 'foo' field is on the display.
+    $this->assertNotNull($display = EntityViewDisplay::load('entity_test.entity_test.default'));
+    $this->assertTrue($display->getComponent('bar'));
+    $this->assertArrayNotHasKey('bar', $display->get('hidden'));
+
+    // Delete the responsive image style.
+    ResponsiveImageStyle::load('foo')->delete();
+
+    // Check that the view display was not deleted.
+    $this->assertNotNull($display = EntityViewDisplay::load('entity_test.entity_test.default'));
+    // Check that the 'foo' field was disabled.
+    $this->assertNull($display->getComponent('bar'));
+    $this->assertArrayHasKey('bar', $display->get('hidden'));
+  }
+
+}