diff --git a/core/modules/responsive_image/responsive_image.module b/core/modules/responsive_image/responsive_image.module index 068f3ea..27c83ca 100644 --- a/core/modules/responsive_image/responsive_image.module +++ b/core/modules/responsive_image/responsive_image.module @@ -297,7 +297,7 @@ function template_preprocess_responsive_image(&$variables) { * * @endcode * - * Note: Since The specs do not allow width descriptors and multipliers combined + * Note: Since the specs do not allow width descriptors and multipliers combined * inside one 'srcset' attribute, we either have to use something like * @code * diff --git a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUITest.php b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUITest.php new file mode 100644 index 0000000..57e2bff --- /dev/null +++ b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUITest.php @@ -0,0 +1,136 @@ +drupalPlaceBlock('system_breadcrumb_block'); + // Create a test user. + $admin_user = $this->drupalCreateUser(array('access content', 'administer content types', 'administer node fields', 'administer node form display', 'administer node display', 'bypass node access')); + $this->drupalLogin($admin_user); + + // Create content type, with underscores. + $type_name = strtolower($this->randomMachineName(8)) . '_test'; + $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name)); + $this->type = $type->id(); + } + + /** + * Tests formatter settings. + */ + function testResponsiveImageFormatterUI() { + $manage_fields = 'admin/structure/types/manage/' . $this->type; + $manage_display = $manage_fields . '/display'; + + // Create a field, and a node with some data for the field. + $this->fieldUIAddNewField($manage_fields, 'image', 'Image field', 'image'); + // Display the "Manage display". + $this->drupalGet($manage_display); + + // Change the formatter and check that the summary is updated. + $edit = array('fields[field_image][type]' => 'responsive_image', 'refresh_rows' => 'field_image'); + $this->drupalPostAjaxForm(NULL, $edit, array('op' => t('Refresh'))); + $this->assertText("Select a responsive image mapping.", 'The expected summary is displayed.'); + + // Submit the form. + $this->drupalPostForm(NULL, array(), t('Save')); + $this->assertText("Select a responsive image mapping.", 'The expected summary is displayed.'); + + // Create responsive image mappings. + $responsive_image_mapping = entity_create('responsive_image_mapping', array( + 'id' => 'mapping_one', + 'label' => 'Mapping One', + 'breakpoint_group' => 'responsive_image_test_module', + )); + $responsive_image_mapping + ->addMappingDefinition('responsive_image_test_module.mobile', '1x', array( + 'image_mapping_type' => 'image_style', + 'image_mapping' => 'thumbnail', + )) + ->addMappingDefinition('responsive_image_test_module.narrow', '1x', array( + 'image_mapping_type' => 'image_style', + 'image_mapping' => 'medium' + )) + // Test the normal output of mapping to an image style. + ->addMappingDefinition('responsive_image_test_module.wide', '1x', array( + 'image_mapping_type' => 'image_style', + 'image_mapping' => 'large', + )) + ->save(); + \Drupal::entityManager()->clearCachedFieldDefinitions(); + // Refresh the page. + $this->drupalGet($manage_display); + $this->assertText("Select a responsive image mapping.", 'The expected summary is displayed.'); + + // Click on the formatter settings button to open the formatter settings + // form. + $this->drupalPostAjaxForm(NULL, array(), "field_image_settings_edit"); + + // Assert that the correct fields are present. + $fieldnames = array( + 'fields[field_image][settings_edit_form][settings][responsive_image_mapping]', + 'fields[field_image][settings_edit_form][settings][fallback_image_style]', + 'fields[field_image][settings_edit_form][settings][image_link]', + ); + foreach ($fieldnames as $fieldname) { + $this->assertField($fieldname); + } + $edit = array( + 'fields[field_image][settings_edit_form][settings][responsive_image_mapping]' => 'mapping_one', + 'fields[field_image][settings_edit_form][settings][fallback_image_style]' => 'thumbnail', + 'fields[field_image][settings_edit_form][settings][image_link]' => 'content', + ); + $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update"); + + // Save the form to save the settings. + $this->drupalPostForm(NULL, array(), t('Save')); + $this->assertText('Responsive image mapping: Mapping One'); + $this->assertText('Fallback Image style: Thumbnail (100×100)'); + $this->assertText('Linked to content'); + + // Click on the formatter settings button to open the formatter settings + // form. + $this->drupalPostAjaxForm(NULL, array(), "field_image_settings_edit"); + $edit = array( + 'fields[field_image][settings_edit_form][settings][responsive_image_mapping]' => 'mapping_one', + 'fields[field_image][settings_edit_form][settings][fallback_image_style]' => '', + 'fields[field_image][settings_edit_form][settings][image_link]' => 'file', + ); + $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update"); + + // Save the form to save the third party settings. + $this->drupalPostForm(NULL, array(), t('Save')); + $this->assertText('Responsive image mapping: Mapping One'); + $this->assertText('Automatic fallback'); + $this->assertText('Linked to file'); + } + +}