annotate core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@17 1 <?php
Chris@17 2
Chris@17 3 namespace Drupal\responsive_image\Tests;
Chris@17 4
Chris@17 5 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
Chris@17 6 use Drupal\responsive_image\Entity\ResponsiveImageStyle;
Chris@17 7
Chris@17 8 /**
Chris@17 9 * Class ResponsiveImageFieldUiTest.
Chris@17 10 *
Chris@17 11 * @group responsive_image
Chris@17 12 */
Chris@17 13 class ResponsiveImageFieldUiTest extends WebDriverTestBase {
Chris@17 14
Chris@17 15 /**
Chris@17 16 * Modules to install.
Chris@17 17 *
Chris@17 18 * @var array
Chris@17 19 */
Chris@17 20 public static $modules = [
Chris@17 21 'node',
Chris@17 22 'field_ui',
Chris@17 23 'image',
Chris@17 24 'responsive_image',
Chris@17 25 'responsive_image_test_module',
Chris@17 26 'block',
Chris@17 27 ];
Chris@17 28
Chris@17 29 /**
Chris@17 30 * {@inheritdoc}
Chris@17 31 */
Chris@17 32 protected function setUp() {
Chris@17 33 parent::setUp();
Chris@17 34 $this->drupalPlaceBlock('system_breadcrumb_block');
Chris@17 35 // Create a test user.
Chris@17 36 $admin_user = $this->drupalCreateUser([
Chris@17 37 'access content',
Chris@17 38 'administer content types',
Chris@17 39 'administer node fields',
Chris@17 40 'administer node form display',
Chris@17 41 'administer node display',
Chris@17 42 'bypass node access',
Chris@17 43 ]);
Chris@17 44 $this->drupalLogin($admin_user);
Chris@17 45
Chris@17 46 // Create content type, with underscores.
Chris@17 47 $type_name = strtolower($this->randomMachineName(8)) . '_test';
Chris@17 48 $type = $this->drupalCreateContentType([
Chris@17 49 'name' => $type_name,
Chris@17 50 'type' => $type_name,
Chris@17 51 ]);
Chris@17 52 $this->type = $type->id();
Chris@17 53 }
Chris@17 54
Chris@17 55 /**
Chris@17 56 * Tests formatter settings.
Chris@17 57 */
Chris@17 58 public function testResponsiveImageFormatterUi() {
Chris@17 59 $manage = 'admin/structure/types/manage/' . $this->type;
Chris@17 60 $add_field = $manage . '/fields/add-field';
Chris@17 61 $manage_display = $manage . '/display';
Chris@17 62 $assert_session = $this->assertSession();
Chris@17 63
Chris@17 64 // Create a field, and a node with some data for the field.
Chris@17 65 // Create the field.
Chris@17 66 $this->drupalGet($add_field);
Chris@17 67
Chris@17 68 $page = $this->getSession()->getPage();
Chris@17 69 $storage_type = $page->findField('edit-new-storage-type');
Chris@17 70 $storage_type->setValue('image');
Chris@17 71
Chris@17 72 // Set the label.
Chris@17 73 $label = $page->findField('edit-label');
Chris@17 74 $label->setValue('Image');
Chris@17 75
Chris@17 76 // Wait for the machine name.
Chris@17 77 $assert_session->waitForElementVisible('css', '[name="label"] + * .machine-name-value');
Chris@17 78
Chris@17 79 // Save the current page.
Chris@17 80 $save_button = $page->findButton('Save and continue');
Chris@17 81 $save_button->click();
Chris@17 82
Chris@17 83 // Display the "Manage display" page.
Chris@17 84 $this->drupalGet($manage_display);
Chris@17 85
Chris@17 86 // Change the formatter and check that the summary is updated.
Chris@17 87 $page = $this->getSession()->getPage();
Chris@17 88
Chris@17 89 $field_image_type = $page->findField('fields[field_image][type]');
Chris@17 90 $field_image_type->setValue('responsive_image');
Chris@17 91
Chris@17 92 $summary_text = $assert_session->waitForElement('xpath', $this->cssSelectToXpath('#field-image .ajax-new-content .field-plugin-summary'));
Chris@17 93 $this->assertEquals('Select a responsive image style.', $summary_text->getText());
Chris@17 94
Chris@17 95 $page->pressButton('Save');
Chris@17 96 $assert_session->responseContains("Select a responsive image style.");
Chris@17 97
Chris@17 98 // Create responsive image styles.
Chris@17 99 $responsive_image_style = ResponsiveImageStyle::create([
Chris@17 100 'id' => 'style_one',
Chris@17 101 'label' => 'Style One',
Chris@17 102 'breakpoint_group' => 'responsive_image_test_module',
Chris@17 103 'fallback_image_style' => 'thumbnail',
Chris@17 104 ]);
Chris@17 105 $responsive_image_style
Chris@17 106 ->addImageStyleMapping('responsive_image_test_module.mobile', '1x', [
Chris@17 107 'image_mapping_type' => 'image_style',
Chris@17 108 'image_mapping' => 'thumbnail',
Chris@17 109 ])
Chris@17 110 ->addImageStyleMapping('responsive_image_test_module.narrow', '1x', [
Chris@17 111 'image_mapping_type' => 'image_style',
Chris@17 112 'image_mapping' => 'medium',
Chris@17 113 ])
Chris@17 114 // Test the normal output of mapping to an image style.
Chris@17 115 ->addImageStyleMapping('responsive_image_test_module.wide', '1x', [
Chris@17 116 'image_mapping_type' => 'image_style',
Chris@17 117 'image_mapping' => 'large',
Chris@17 118 ])
Chris@17 119 ->save();
Chris@17 120 \Drupal::entityManager()->clearCachedFieldDefinitions();
Chris@17 121 // Refresh the page.
Chris@17 122 $this->drupalGet($manage_display);
Chris@17 123 $assert_session->responseContains("Select a responsive image style.");
Chris@17 124
Chris@17 125 // Click on the formatter settings button to open the formatter settings
Chris@17 126 // form.
Chris@17 127 $field_image_type = $page->findField('fields[field_image][type]');
Chris@17 128 $field_image_type->setValue('responsive_image');
Chris@17 129
Chris@17 130 $page->find('css', '#edit-fields-field-image-settings-edit')->click();
Chris@17 131 $assert_session->waitForField('fields[field_image][settings_edit_form][settings][responsive_image_style]');
Chris@17 132
Chris@17 133 // Assert that the correct fields are present.
Chris@17 134 $fieldnames = [
Chris@17 135 'fields[field_image][settings_edit_form][settings][responsive_image_style]',
Chris@17 136 'fields[field_image][settings_edit_form][settings][image_link]',
Chris@17 137 ];
Chris@17 138 foreach ($fieldnames as $fieldname) {
Chris@17 139 $assert_session->fieldExists($fieldname);
Chris@17 140 }
Chris@17 141 $page->findField('fields[field_image][settings_edit_form][settings][responsive_image_style]')->setValue('style_one');
Chris@17 142 $page->findField('fields[field_image][settings_edit_form][settings][image_link]')->setValue('content');
Chris@17 143 // Save the form to save the settings.
Chris@17 144 $page->pressButton('Save');
Chris@17 145
Chris@17 146 $assert_session->responseContains('Responsive image style: Style One');
Chris@17 147 $assert_session->responseContains('Linked to content');
Chris@17 148
Chris@17 149 $page->find('css', '#edit-fields-field-image-settings-edit')->click();
Chris@17 150 $assert_session->waitForField('fields[field_image][settings_edit_form][settings][responsive_image_style]');
Chris@17 151 $page->findField('fields[field_image][settings_edit_form][settings][image_link]')->setValue('file');
Chris@17 152
Chris@17 153 // Save the form to save the settings.
Chris@17 154 $page->pressButton('Save');
Chris@17 155
Chris@17 156 $assert_session->responseContains('Responsive image style: Style One');
Chris@17 157 $assert_session->responseContains('Linked to file');
Chris@17 158 }
Chris@17 159
Chris@17 160 }