Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / responsive_image / tests / src / Functional / ViewsIntegrationTest.php
diff --git a/web/core/modules/responsive_image/tests/src/Functional/ViewsIntegrationTest.php b/web/core/modules/responsive_image/tests/src/Functional/ViewsIntegrationTest.php
new file mode 100644 (file)
index 0000000..33f19a5
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+namespace Drupal\Tests\responsive_image\Functional;
+
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\responsive_image\Entity\ResponsiveImageStyle;
+use Drupal\Tests\views\Functional\ViewTestBase;
+
+/**
+ * Tests the integration of responsive image with Views.
+ *
+ * @group responsive_image
+ */
+class ViewsIntegrationTest extends ViewTestBase {
+
+  /**
+   * The responsive image style ID to use.
+   */
+  const RESPONSIVE_IMAGE_STYLE_ID = 'responsive_image_style_id';
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'views',
+    'views_ui',
+    'responsive_image',
+    'field',
+    'image',
+    'file',
+    'entity_test',
+    'breakpoint',
+    'responsive_image_test_module',
+  ];
+
+  /**
+   * The test views to enable.
+   */
+  public static $testViews = ['entity_test_row'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp($import_test_views = TRUE) {
+    parent::setUp($import_test_views);
+
+    $this->enableViewsTestModule();
+
+    // Create a responsive image style.
+    $responsive_image_style = ResponsiveImageStyle::create([
+      'id' => self::RESPONSIVE_IMAGE_STYLE_ID,
+      'label' => 'Foo',
+      'breakpoint_group' => 'responsive_image_test_module',
+    ]);
+    // 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();
+
+    $responsive_image_style
+      ->addImageStyleMapping('responsive_image_test_module.mobile', '1x', [
+        'image_mapping_type' => 'image_style',
+        'image_mapping' => 'thumbnail',
+      ])
+      ->addImageStyleMapping('responsive_image_test_module.narrow', '1x', [
+        'image_mapping_type' => 'image_style',
+        'image_mapping' => 'medium',
+      ])
+      // Test the normal output of mapping to an image style.
+      ->addImageStyleMapping('responsive_image_test_module.wide', '1x', [
+        'image_mapping_type' => 'image_style',
+        'image_mapping' => 'large',
+      ])
+      ->save();
+
+    $admin_user = $this->drupalCreateUser(['administer views']);
+    $this->drupalLogin($admin_user);
+  }
+
+  /**
+   * Tests integration with Views.
+   */
+  public function testViewsAddResponsiveImageField() {
+    // Add the image field to the View.
+    $this->drupalGet('admin/structure/views/nojs/add-handler/entity_test_row/default/field');
+    $this->drupalPostForm('admin/structure/views/nojs/add-handler/entity_test_row/default/field', ['name[entity_test__bar.bar]' => TRUE], 'Add and configure field');
+    // Set the formatter to 'Responsive image'.
+    $this->drupalPostForm(NULL, ['options[type]' => 'responsive_image'], 'Apply');
+    $this->assertSession()
+      ->responseContains('Responsive image style field is required.');
+    $this->drupalPostForm(NULL, ['options[settings][responsive_image_style]' => self::RESPONSIVE_IMAGE_STYLE_ID], 'Apply');
+    $this->drupalGet('admin/structure/views/nojs/handler/entity_test_row/default/field/bar');
+    // Make sure the selected value is set.
+    $this->assertSession()
+      ->fieldValueEquals('options[settings][responsive_image_style]', self::RESPONSIVE_IMAGE_STYLE_ID);
+  }
+
+}