annotate core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php @ 6:875880e46745

Styling
author Chris Cannam
date Fri, 08 Dec 2017 13:21:27 +0000
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\responsive_image\Tests;
Chris@0 4
Chris@0 5 use Drupal\field_ui\Tests\FieldUiTestTrait;
Chris@0 6 use Drupal\simpletest\WebTestBase;
Chris@0 7 use Drupal\responsive_image\Entity\ResponsiveImageStyle;
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Tests the "Responsive Image" formatter settings form.
Chris@0 11 *
Chris@0 12 * @group responsive_image
Chris@0 13 */
Chris@0 14 class ResponsiveImageFieldUiTest extends WebTestBase {
Chris@0 15
Chris@0 16 use FieldUiTestTrait;
Chris@0 17
Chris@0 18 /**
Chris@0 19 * Modules to install.
Chris@0 20 *
Chris@0 21 * @var array
Chris@0 22 */
Chris@0 23 public static $modules = ['node', 'field_ui', 'image', 'responsive_image', 'responsive_image_test_module', 'block'];
Chris@0 24
Chris@0 25 /**
Chris@0 26 * {@inheritdoc}
Chris@0 27 */
Chris@0 28 protected function setUp() {
Chris@0 29 parent::setUp();
Chris@0 30 $this->drupalPlaceBlock('system_breadcrumb_block');
Chris@0 31 // Create a test user.
Chris@0 32 $admin_user = $this->drupalCreateUser(['access content', 'administer content types', 'administer node fields', 'administer node form display', 'administer node display', 'bypass node access']);
Chris@0 33 $this->drupalLogin($admin_user);
Chris@0 34
Chris@0 35 // Create content type, with underscores.
Chris@0 36 $type_name = strtolower($this->randomMachineName(8)) . '_test';
Chris@0 37 $type = $this->drupalCreateContentType(['name' => $type_name, 'type' => $type_name]);
Chris@0 38 $this->type = $type->id();
Chris@0 39 }
Chris@0 40
Chris@0 41 /**
Chris@0 42 * Tests formatter settings.
Chris@0 43 */
Chris@0 44 public function testResponsiveImageFormatterUI() {
Chris@0 45 $manage_fields = 'admin/structure/types/manage/' . $this->type;
Chris@0 46 $manage_display = $manage_fields . '/display';
Chris@0 47
Chris@0 48 // Create a field, and a node with some data for the field.
Chris@0 49 $this->fieldUIAddNewField($manage_fields, 'image', 'Image field', 'image');
Chris@0 50 // Display the "Manage display".
Chris@0 51 $this->drupalGet($manage_display);
Chris@0 52
Chris@0 53 // Change the formatter and check that the summary is updated.
Chris@0 54 $edit = [
Chris@0 55 'fields[field_image][type]' => 'responsive_image',
Chris@0 56 'fields[field_image][region]' => 'content',
Chris@0 57 'refresh_rows' => 'field_image',
Chris@0 58 ];
Chris@0 59 $this->drupalPostAjaxForm(NULL, $edit, ['op' => t('Refresh')]);
Chris@0 60 $this->assertText("Select a responsive image style.", 'The expected summary is displayed.');
Chris@0 61
Chris@0 62 // Submit the form.
Chris@0 63 $this->drupalPostForm(NULL, [], t('Save'));
Chris@0 64 $this->assertText("Select a responsive image style.", 'The expected summary is displayed.');
Chris@0 65
Chris@0 66 // Create responsive image styles.
Chris@0 67 $responsive_image_style = ResponsiveImageStyle::create([
Chris@0 68 'id' => 'style_one',
Chris@0 69 'label' => 'Style One',
Chris@0 70 'breakpoint_group' => 'responsive_image_test_module',
Chris@0 71 'fallback_image_style' => 'thumbnail',
Chris@0 72 ]);
Chris@0 73 $responsive_image_style
Chris@0 74 ->addImageStyleMapping('responsive_image_test_module.mobile', '1x', [
Chris@0 75 'image_mapping_type' => 'image_style',
Chris@0 76 'image_mapping' => 'thumbnail',
Chris@0 77 ])
Chris@0 78 ->addImageStyleMapping('responsive_image_test_module.narrow', '1x', [
Chris@0 79 'image_mapping_type' => 'image_style',
Chris@0 80 'image_mapping' => 'medium'
Chris@0 81 ])
Chris@0 82 // Test the normal output of mapping to an image style.
Chris@0 83 ->addImageStyleMapping('responsive_image_test_module.wide', '1x', [
Chris@0 84 'image_mapping_type' => 'image_style',
Chris@0 85 'image_mapping' => 'large',
Chris@0 86 ])
Chris@0 87 ->save();
Chris@0 88 \Drupal::entityManager()->clearCachedFieldDefinitions();
Chris@0 89 // Refresh the page.
Chris@0 90 $this->drupalGet($manage_display);
Chris@0 91 $this->assertText("Select a responsive image style.", 'The expected summary is displayed.');
Chris@0 92
Chris@0 93 // Click on the formatter settings button to open the formatter settings
Chris@0 94 // form.
Chris@0 95 $this->drupalPostAjaxForm(NULL, [], "field_image_settings_edit");
Chris@0 96
Chris@0 97 // Assert that the correct fields are present.
Chris@0 98 $fieldnames = [
Chris@0 99 'fields[field_image][settings_edit_form][settings][responsive_image_style]',
Chris@0 100 'fields[field_image][settings_edit_form][settings][image_link]',
Chris@0 101 ];
Chris@0 102 foreach ($fieldnames as $fieldname) {
Chris@0 103 $this->assertField($fieldname);
Chris@0 104 }
Chris@0 105 $edit = [
Chris@0 106 'fields[field_image][settings_edit_form][settings][responsive_image_style]' => 'style_one',
Chris@0 107 'fields[field_image][settings_edit_form][settings][image_link]' => 'content',
Chris@0 108 ];
Chris@0 109 $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update");
Chris@0 110
Chris@0 111 // Save the form to save the settings.
Chris@0 112 $this->drupalPostForm(NULL, [], t('Save'));
Chris@0 113 $this->assertText('Responsive image style: Style One');
Chris@0 114 $this->assertText('Linked to content');
Chris@0 115
Chris@0 116 // Click on the formatter settings button to open the formatter settings
Chris@0 117 // form.
Chris@0 118 $this->drupalPostAjaxForm(NULL, [], "field_image_settings_edit");
Chris@0 119 $edit = [
Chris@0 120 'fields[field_image][settings_edit_form][settings][responsive_image_style]' => 'style_one',
Chris@0 121 'fields[field_image][settings_edit_form][settings][image_link]' => 'file',
Chris@0 122 ];
Chris@0 123 $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update");
Chris@0 124
Chris@0 125 // Save the form to save the third party settings.
Chris@0 126 $this->drupalPostForm(NULL, [], t('Save'));
Chris@0 127 $this->assertText('Responsive image style: Style One');
Chris@0 128 $this->assertText('Linked to file');
Chris@0 129 }
Chris@0 130
Chris@0 131 }