Chris@0: drupalPlaceBlock('system_breadcrumb_block'); Chris@0: // Create a test user. Chris@0: $admin_user = $this->drupalCreateUser(['access content', 'administer content types', 'administer node fields', 'administer node form display', 'administer node display', 'bypass node access']); Chris@0: $this->drupalLogin($admin_user); Chris@0: Chris@0: // Create content type, with underscores. Chris@0: $type_name = strtolower($this->randomMachineName(8)) . '_test'; Chris@0: $type = $this->drupalCreateContentType(['name' => $type_name, 'type' => $type_name]); Chris@0: $this->type = $type->id(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests formatter settings. Chris@0: */ Chris@0: public function testResponsiveImageFormatterUI() { Chris@0: $manage_fields = 'admin/structure/types/manage/' . $this->type; Chris@0: $manage_display = $manage_fields . '/display'; Chris@0: Chris@0: // Create a field, and a node with some data for the field. Chris@0: $this->fieldUIAddNewField($manage_fields, 'image', 'Image field', 'image'); Chris@0: // Display the "Manage display". Chris@0: $this->drupalGet($manage_display); Chris@0: Chris@0: // Change the formatter and check that the summary is updated. Chris@0: $edit = [ Chris@0: 'fields[field_image][type]' => 'responsive_image', Chris@0: 'fields[field_image][region]' => 'content', Chris@0: 'refresh_rows' => 'field_image', Chris@0: ]; Chris@0: $this->drupalPostAjaxForm(NULL, $edit, ['op' => t('Refresh')]); Chris@0: $this->assertText("Select a responsive image style.", 'The expected summary is displayed.'); Chris@0: Chris@0: // Submit the form. Chris@0: $this->drupalPostForm(NULL, [], t('Save')); Chris@0: $this->assertText("Select a responsive image style.", 'The expected summary is displayed.'); Chris@0: Chris@0: // Create responsive image styles. Chris@0: $responsive_image_style = ResponsiveImageStyle::create([ Chris@0: 'id' => 'style_one', Chris@0: 'label' => 'Style One', Chris@0: 'breakpoint_group' => 'responsive_image_test_module', Chris@0: 'fallback_image_style' => 'thumbnail', Chris@0: ]); Chris@0: $responsive_image_style Chris@0: ->addImageStyleMapping('responsive_image_test_module.mobile', '1x', [ Chris@0: 'image_mapping_type' => 'image_style', Chris@0: 'image_mapping' => 'thumbnail', Chris@0: ]) Chris@0: ->addImageStyleMapping('responsive_image_test_module.narrow', '1x', [ Chris@0: 'image_mapping_type' => 'image_style', Chris@0: 'image_mapping' => 'medium' Chris@0: ]) Chris@0: // Test the normal output of mapping to an image style. Chris@0: ->addImageStyleMapping('responsive_image_test_module.wide', '1x', [ Chris@0: 'image_mapping_type' => 'image_style', Chris@0: 'image_mapping' => 'large', Chris@0: ]) Chris@0: ->save(); Chris@0: \Drupal::entityManager()->clearCachedFieldDefinitions(); Chris@0: // Refresh the page. Chris@0: $this->drupalGet($manage_display); Chris@0: $this->assertText("Select a responsive image style.", 'The expected summary is displayed.'); Chris@0: Chris@0: // Click on the formatter settings button to open the formatter settings Chris@0: // form. Chris@0: $this->drupalPostAjaxForm(NULL, [], "field_image_settings_edit"); Chris@0: Chris@0: // Assert that the correct fields are present. Chris@0: $fieldnames = [ Chris@0: 'fields[field_image][settings_edit_form][settings][responsive_image_style]', Chris@0: 'fields[field_image][settings_edit_form][settings][image_link]', Chris@0: ]; Chris@0: foreach ($fieldnames as $fieldname) { Chris@0: $this->assertField($fieldname); Chris@0: } Chris@0: $edit = [ Chris@0: 'fields[field_image][settings_edit_form][settings][responsive_image_style]' => 'style_one', Chris@0: 'fields[field_image][settings_edit_form][settings][image_link]' => 'content', Chris@0: ]; Chris@0: $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update"); Chris@0: Chris@0: // Save the form to save the settings. Chris@0: $this->drupalPostForm(NULL, [], t('Save')); Chris@0: $this->assertText('Responsive image style: Style One'); Chris@0: $this->assertText('Linked to content'); Chris@0: Chris@0: // Click on the formatter settings button to open the formatter settings Chris@0: // form. Chris@0: $this->drupalPostAjaxForm(NULL, [], "field_image_settings_edit"); Chris@0: $edit = [ Chris@0: 'fields[field_image][settings_edit_form][settings][responsive_image_style]' => 'style_one', Chris@0: 'fields[field_image][settings_edit_form][settings][image_link]' => 'file', Chris@0: ]; Chris@0: $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update"); Chris@0: Chris@0: // Save the form to save the third party settings. Chris@0: $this->drupalPostForm(NULL, [], t('Save')); Chris@0: $this->assertText('Responsive image style: Style One'); Chris@0: $this->assertText('Linked to file'); Chris@0: } Chris@0: Chris@0: }