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