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 }
|