diff -u b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php --- b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php +++ b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php @@ -116,7 +116,7 @@ */ public static function defaultSettings() { return [ - 'responsive_image_style' => '', + 'responsive_image_style' => NULL, 'image_link' => '', ] + parent::defaultSettings(); } diff -u b/core/modules/responsive_image/tests/src/Functional/ViewsIntegrationTest.php b/core/modules/responsive_image/tests/src/Functional/ViewsIntegrationTest.php --- b/core/modules/responsive_image/tests/src/Functional/ViewsIntegrationTest.php +++ b/core/modules/responsive_image/tests/src/Functional/ViewsIntegrationTest.php @@ -15,6 +15,11 @@ 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']; @@ -33,11 +38,11 @@ $this->enableViewsTestModule(); // Create a responsive image style. - ResponsiveImageStyle::create([ - 'id' => 'foo', + $responsive_image_style = ResponsiveImageStyle::create([ + 'id' => self::RESPONSIVE_IMAGE_STYLE_ID, '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', @@ -50,6 +55,22 @@ '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); } @@ -64,6 +85,10 @@ // 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); } }