Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\media\Functional;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\media\Entity\Media;
|
Chris@0
|
6 use Drupal\media\Entity\MediaType;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Ensures that media UI works correctly.
|
Chris@0
|
10 *
|
Chris@0
|
11 * @group media
|
Chris@0
|
12 */
|
Chris@0
|
13 class MediaUiFunctionalTest extends MediaFunctionalTestBase {
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * Modules to enable.
|
Chris@0
|
17 *
|
Chris@0
|
18 * @var array
|
Chris@0
|
19 */
|
Chris@0
|
20 public static $modules = [
|
Chris@0
|
21 'block',
|
Chris@0
|
22 'media_test_source',
|
Chris@0
|
23 ];
|
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('local_actions_block');
|
Chris@0
|
31 $this->drupalPlaceBlock('local_tasks_block');
|
Chris@0
|
32
|
Chris@0
|
33 // We need to test without any default configuration in place.
|
Chris@0
|
34 // @TODO: Remove this when https://www.drupal.org/node/2883813 lands.
|
Chris@0
|
35 MediaType::load('file')->delete();
|
Chris@0
|
36 MediaType::load('image')->delete();
|
Chris@0
|
37 }
|
Chris@0
|
38
|
Chris@0
|
39 /**
|
Chris@0
|
40 * Tests the media actions (add/edit/delete).
|
Chris@0
|
41 */
|
Chris@0
|
42 public function testMediaWithOnlyOneMediaType() {
|
Chris@0
|
43 $session = $this->getSession();
|
Chris@0
|
44 $page = $session->getPage();
|
Chris@0
|
45 $assert_session = $this->assertSession();
|
Chris@0
|
46
|
Chris@0
|
47 $media_type = $this->createMediaType([
|
Chris@0
|
48 'new_revision' => FALSE,
|
Chris@0
|
49 'queue_thumbnail_downloads' => FALSE,
|
Chris@0
|
50 ]);
|
Chris@0
|
51
|
Chris@0
|
52 $this->drupalGet('media/add');
|
Chris@0
|
53 $assert_session->statusCodeEquals(200);
|
Chris@0
|
54 $assert_session->addressEquals('media/add/' . $media_type->id());
|
Chris@0
|
55 $assert_session->elementNotExists('css', '#edit-revision');
|
Chris@0
|
56
|
Chris@0
|
57 // Tests media add form.
|
Chris@0
|
58 $media_name = $this->randomMachineName();
|
Chris@0
|
59 $page->fillField('name[0][value]', $media_name);
|
Chris@0
|
60 $revision_log_message = $this->randomString();
|
Chris@0
|
61 $page->fillField('revision_log_message[0][value]', $revision_log_message);
|
Chris@0
|
62 $page->pressButton('Save');
|
Chris@0
|
63 $media_id = $this->container->get('entity.query')->get('media')->execute();
|
Chris@0
|
64 $media_id = reset($media_id);
|
Chris@0
|
65 /** @var \Drupal\media\MediaInterface $media */
|
Chris@0
|
66 $media = $this->container->get('entity_type.manager')
|
Chris@0
|
67 ->getStorage('media')
|
Chris@0
|
68 ->loadUnchanged($media_id);
|
Chris@0
|
69 $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message);
|
Chris@0
|
70 $this->assertEquals($media->getName(), $media_name);
|
Chris@0
|
71 $assert_session->titleEquals($media_name . ' | Drupal');
|
Chris@0
|
72
|
Chris@0
|
73 // Tests media edit form.
|
Chris@0
|
74 $media_type->setNewRevision(FALSE);
|
Chris@0
|
75 $media_type->save();
|
Chris@0
|
76 $media_name2 = $this->randomMachineName();
|
Chris@0
|
77 $this->drupalGet('media/' . $media_id . '/edit');
|
Chris@0
|
78 $assert_session->checkboxNotChecked('edit-revision');
|
Chris@0
|
79 $media_name = $this->randomMachineName();
|
Chris@0
|
80 $page->fillField('name[0][value]', $media_name2);
|
Chris@0
|
81 $page->pressButton('Save');
|
Chris@0
|
82 /** @var \Drupal\media\MediaInterface $media */
|
Chris@0
|
83 $media = $this->container->get('entity_type.manager')
|
Chris@0
|
84 ->getStorage('media')
|
Chris@0
|
85 ->loadUnchanged($media_id);
|
Chris@0
|
86 $this->assertEquals($media->getName(), $media_name2);
|
Chris@0
|
87 $assert_session->titleEquals($media_name2 . ' | Drupal');
|
Chris@0
|
88
|
Chris@0
|
89 // Test that there is no empty vertical tabs element, if the container is
|
Chris@0
|
90 // empty (see #2750697).
|
Chris@0
|
91 // Make the "Publisher ID" and "Created" fields hidden.
|
Chris@0
|
92 $this->drupalGet('/admin/structure/media/manage/' . $media_type->id() . '/form-display');
|
Chris@0
|
93 $page->selectFieldOption('fields[created][parent]', 'hidden');
|
Chris@0
|
94 $page->selectFieldOption('fields[uid][parent]', 'hidden');
|
Chris@0
|
95 $page->pressButton('Save');
|
Chris@0
|
96 // Assure we are testing with a user without permission to manage revisions.
|
Chris@0
|
97 $this->drupalLogin($this->nonAdminUser);
|
Chris@0
|
98 // Check the container is not present.
|
Chris@0
|
99 $this->drupalGet('media/' . $media_id . '/edit');
|
Chris@0
|
100 $assert_session->elementNotExists('css', 'input.vertical-tabs__active-tab');
|
Chris@0
|
101 // Continue testing as admin.
|
Chris@0
|
102 $this->drupalLogin($this->adminUser);
|
Chris@0
|
103
|
Chris@0
|
104 // Enable revisions by default.
|
Chris@0
|
105 $previous_revision_id = $media->getRevisionId();
|
Chris@0
|
106 $media_type->setNewRevision(TRUE);
|
Chris@0
|
107 $media_type->save();
|
Chris@0
|
108 $this->drupalGet('media/' . $media_id . '/edit');
|
Chris@0
|
109 $assert_session->checkboxChecked('edit-revision');
|
Chris@0
|
110 $page->fillField('name[0][value]', $media_name);
|
Chris@0
|
111 $page->fillField('revision_log_message[0][value]', $revision_log_message);
|
Chris@0
|
112 $page->pressButton('Save');
|
Chris@0
|
113 $assert_session->titleEquals($media_name . ' | Drupal');
|
Chris@0
|
114 /** @var \Drupal\media\MediaInterface $media */
|
Chris@0
|
115 $media = $this->container->get('entity_type.manager')
|
Chris@0
|
116 ->getStorage('media')
|
Chris@0
|
117 ->loadUnchanged($media_id);
|
Chris@0
|
118 $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message);
|
Chris@0
|
119 $this->assertNotEquals($previous_revision_id, $media->getRevisionId());
|
Chris@0
|
120
|
Chris@0
|
121 // Test the status checkbox.
|
Chris@0
|
122 $this->drupalGet('media/' . $media_id . '/edit');
|
Chris@0
|
123 $page->uncheckField('status[value]');
|
Chris@0
|
124 $page->pressButton('Save');
|
Chris@0
|
125 /** @var \Drupal\media\MediaInterface $media */
|
Chris@0
|
126 $media = $this->container->get('entity_type.manager')
|
Chris@0
|
127 ->getStorage('media')
|
Chris@0
|
128 ->loadUnchanged($media_id);
|
Chris@0
|
129 $this->assertFalse($media->isPublished());
|
Chris@0
|
130
|
Chris@0
|
131 // Tests media delete form.
|
Chris@0
|
132 $this->drupalGet('media/' . $media_id . '/edit');
|
Chris@0
|
133 $page->clickLink('Delete');
|
Chris@0
|
134 $assert_session->pageTextContains('This action cannot be undone');
|
Chris@0
|
135 $page->pressButton('Delete');
|
Chris@0
|
136 $media_id = \Drupal::entityQuery('media')->execute();
|
Chris@0
|
137 $this->assertFalse($media_id);
|
Chris@0
|
138 }
|
Chris@0
|
139
|
Chris@0
|
140 /**
|
Chris@0
|
141 * Tests the "media/add" and "media/mid" pages.
|
Chris@0
|
142 *
|
Chris@0
|
143 * Tests if the "media/add" page gives you a selecting option if there are
|
Chris@0
|
144 * multiple media types available.
|
Chris@0
|
145 */
|
Chris@0
|
146 public function testMediaWithMultipleMediaTypes() {
|
Chris@0
|
147 $assert_session = $this->assertSession();
|
Chris@0
|
148
|
Chris@0
|
149 // Tests and creates the first media type.
|
Chris@0
|
150 $first_media_type = $this->createMediaType(['description' => $this->randomMachineName(32)]);
|
Chris@0
|
151
|
Chris@0
|
152 // Test and create a second media type.
|
Chris@0
|
153 $second_media_type = $this->createMediaType(['description' => $this->randomMachineName(32)]);
|
Chris@0
|
154
|
Chris@0
|
155 // Test if media/add displays two media type options.
|
Chris@0
|
156 $this->drupalGet('media/add');
|
Chris@0
|
157
|
Chris@0
|
158 // Checks for the first media type.
|
Chris@0
|
159 $assert_session->pageTextContains($first_media_type->label());
|
Chris@0
|
160 $assert_session->pageTextContains($first_media_type->getDescription());
|
Chris@0
|
161 // Checks for the second media type.
|
Chris@0
|
162 $assert_session->pageTextContains($second_media_type->label());
|
Chris@0
|
163 $assert_session->pageTextContains($second_media_type->getDescription());
|
Chris@0
|
164
|
Chris@0
|
165 // Continue testing media type filter.
|
Chris@0
|
166 $first_media_item = Media::create(['bundle' => $first_media_type->id()]);
|
Chris@0
|
167 $first_media_item->save();
|
Chris@0
|
168 $second_media_item = Media::create(['bundle' => $second_media_type->id()]);
|
Chris@0
|
169 $second_media_item->save();
|
Chris@0
|
170
|
Chris@0
|
171 // Go to first media item.
|
Chris@0
|
172 $this->drupalGet('media/' . $first_media_item->id());
|
Chris@0
|
173 $assert_session->statusCodeEquals(200);
|
Chris@0
|
174 $assert_session->pageTextContains($first_media_item->getName());
|
Chris@0
|
175
|
Chris@0
|
176 // Go to second media item.
|
Chris@0
|
177 $this->drupalGet('media/' . $second_media_item->id());
|
Chris@0
|
178 $assert_session->statusCodeEquals(200);
|
Chris@0
|
179 $assert_session->pageTextContains($second_media_item->getName());
|
Chris@0
|
180 }
|
Chris@0
|
181
|
Chris@0
|
182 }
|